我們?cè)谥耙呀?jīng)介紹了dispatcherServlet的配置,今天小博老師再跟大家介紹一下dispatcherServlet的工作原理和類(lèi)繼承關(guān)系啊片。下面這張圖將主要的向管理類(lèi)及方法抽離出來(lái),方便查看,根據(jù)類(lèi)的結(jié)構(gòu)說(shuō)明整個(gè)請(qǐng)求是如何工作的。
從類(lèi)圖中很容易看出DispatcherServlet最終繼承的是HttpServlet蜂筹,也就是說(shuō)它同樣滿足Servlet的工作原理。Servlet初始化時(shí)需要調(diào)用init方法芦倒,該方法由在HttpServletBean實(shí)現(xiàn)艺挪,init方法調(diào)用了initServletBean,該方法在FrameworkServlet中實(shí)現(xiàn)熙暴。initServletBean方法會(huì)初始化配置文件闺属,如{servlet-name}-servlet.xml慌盯。
請(qǐng)求到達(dá)后Servlet將調(diào)用service方法進(jìn)行處理周霉,如果是get方法請(qǐng)求,Servlet將調(diào)用doGet方法亚皂,doGet方法在FrameworkServlet中實(shí)現(xiàn)俱箱,doGet方法又會(huì)調(diào)用processRequest方法,processRequest則調(diào)用doService方法處理灭必,而doService方法在DispatcherServlet中實(shí)現(xiàn)狞谱,doService再調(diào)用了DispatcherServlet的doDispatch方法,該方法則會(huì)根據(jù)request找到轉(zhuǎn)發(fā)對(duì)象禁漓,并進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)操作跟衅。