springmvc三十二:spring mvc的运行流程
1. 所有的請求,前端控制器(DispatcherServlet)收到請求,調用doDispatch進行處理
2. 根據HandlerMapping中保存的請求映射信息找到,處理當前請求的,處理器執行鏈(包含了攔截器)。
3. 根據當前處理器找到他的HandlerAdapter(適配器)
4. 攔截器的preHandle方法先執行
5. HandlerAdapter(適配器)執行目標方法,并返回ModelAndView
? ? ? 1). ModelAttribute注解標注的方法提前運行
? ? ? 2). 執行目標方法的時候(確定目標方法用的參數)
? ? ? ? ? ? ? ?1). 參數有注解
? ? ? ? ? ? ? ?2). 沒有注解
? ? ? ? ? ? ? ? ? ? ?1). 看是否Model,Map以及其他的
? ? ? ? ? ? ? ? ? ? ?2). 如果是自定義類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1). 從隱含模型中看有沒有,如果有就從隱含模型中拿
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2). 如果沒有,再看是否SessionAttributes標注的屬性,如果是從Session中拿,如果拿不到就會跑出異常.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3). 以上兩種都不是,就利用反射創建對象
? ?6. 攔截器的postHandle執行。
? ?7. 處理結果(頁面渲染流程)
? ? ? ? 1). 如果有異常使用異常解析器處理異常; 處理完后,還會返回ModelAndview
? ? ? ? 2). 調用render進行頁面渲染。
? ? ? ? ? ? ? ? ?1). 視圖解析器根據視圖名得到視圖對象
? ? ? ? ? ? ? ? ? 2). 視圖對象調用render方法
? ? ? ? 3).?執行攔截器的afterCompletion。
總結
以上是生活随笔為你收集整理的springmvc三十二:spring mvc的运行流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springmvc三十一:spring
- 下一篇: 数据结构:后缀表达式(逆波兰表达式)