傑信物流項目總結(六)

Spring MVC工作流程

DispatcherServlet配置到web.xml。在servlet.init()的時候進行spring mvc的初始化

1、創建springmvc的ioc容器並refresh(),從ServletContext中拿到Spring ioc容器並設置父子ApplicationContext關係

2、初始化Servlet需要用的策略工具

比如:初始化文件上傳工具、國際化工具、HandlerMappings、HandlerAdapters、View解析器

從容器裏拿出所有HandlerMapping設置到dispatcherServlet.handlerMappings

從容器裏拿出所有HandlerAdapter設置到dispatcherServlet.handlerAdapters

從容器裏拿出所有ViewResolver設置到dispatcherServlet.viewResolvers

如果容器裏面沒有,可以從包中讀DispatcherServlet.properties進行配置

3、servlet請求都會被轉發到doDispatcher進行處理

檢查請求是multipart/form-data內容類型,就用multipartResolver進行解析封裝

遍歷handlerMappings,執行mapping.gethandler(request),看誰最先返回非空的handlerChain (該chain包含interceptors)

遍歷handlerAdaptors,執行adaptor.supports(handlerChain.getHandler()),看誰最先匹配上就返回該adaptor

從chain裏拿到所有攔截器進行遍歷

執行interceptor.preHandle(req,res,handler)

modelAndView = adaptor.handler(req,res,handler)

執行interceptor.postHandle(req,res,handler,modelAndView)

遍歷viewResolvers,執行view = viewResolver.resolverViewName(mav.getViewName, locale)

view.render(mav.getModelInternal(), req, res)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章