詳細步驟:前端
1.用戶向服務器發送請求,被Spring前端控制DispatcherServlet捕獲,調用doService()方法
2.doService()方法調用doDispatcher()方法
3.遍歷當前這個servlet全部註冊的HandlerMapping,根據request得到這次請求的HandlerExecutionChain,若是沒有找到,則返回404
4.遍歷當前這個servlet全部註冊的HandlerAdapter,根據當前這個HandlerExecutionChain找到合適的HandlerAdapter,若是沒有,則拋出異常。
5.處理 header頭裏有last-modified的get方法
6.先得到該servlet對應的HandlerInterceptor,若是爲空,則新建一個HandlerInterceptor數組。
7.遍歷全部的HandlerInterceptor,當preHandle(攔截一個handler執行)返回false,則往回執行全部攔截器的afterCompletion,再退出攔截器鏈。(請求不繼續往下傳,直接沿着原來的鏈往回跑),直接返回空。
8.當preHandle所有返回true,順序執行完全部攔截器。
9.HandlerAdapter開始調用handle方法處理當前request,返回一個ModelAndView
10.根據request設置默認的視圖名稱。
11.HandlerExecutionChain調用applyPostHandle()方法,逆序執行註冊的攔截器
12.選擇一個適合的ViewResolver結合Model和View渲染視圖
13.渲染結果返回給客戶端。數組