springMVC-doService()分析

1、request到dispaterServlet

-> doservice( request,response){
    1、保存請求快照
    2、共享上下文信息,本地解析,主題解析等對象給 handler和view對象
    
}
-->doDispatch( request,reponse){
    1、判斷request是否是文件上傳請求,是則轉換成MultipartRequest,
    2、gethandler(request)-- HandlerExecutionChain <--HandlerMapping.getHandler(request)
    3、獲取getHandlerApator(handler)  HandlerAdapter<-- HandlerAdapter.support(handler) ,返回支持當前handler的        handleradapter
    4、判斷是否是get或者head請求。根據lasdModified(request)判斷請求是否改變,沒有發生改變則不再繼續請求,而是告訴瀏覽器       繼續使用上次的緩存結果。
    5、handler.applyPreHandle(),執行前置攔截器中的方法。
    6、handlerAdaptar.hand()--handlerInternal(request,response,handler)--設置session信息--同步或異步執行invokeHandleMethod(request, response, handlerMethod)--返回modelandview對象。
    7、當modelandview不等空且viewname爲空時根據request設置默認的viewname
    8、handler.applyPosthandle() ,執行後置攔截器
    9、上述步驟發生異常的話就捕獲交給 dispatchException來處理。
    10、執行 processDispatchResult(),根據相應的viewname返回到客戶端{
        1、處理異常
        2、modelandview不爲空則,執行render()方法,渲染視圖--view.render()--renderMergedOutputModel()[jsp默認的視圖是InternaleResourceView]
    }


}



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