Spring MVC
https://xie.infoq.cn/article/118d19a4ca5de87163de4942c
Last updated
Was this helpful?
https://xie.infoq.cn/article/118d19a4ca5de87163de4942c
Last updated
Was this helpful?
提供了 MVC體系結構 ( Model - View - Controller ) 和 現成的組件,可用於開發靈活且鬆散耦合的 Web 應用。
MVC 模式分離了應用的不同方面 (輸入邏輯、業務邏輯、 UI邏輯等等)。
各個角色清楚分離 –控制器、驗證器、模型對象,處理程序映射,視圖解析器等等。 每個角色都可以透過專門的對象 (Bean) 來實現。
可以自行定義驗證器 / View 映射處理 / 語系 / 主題 等等。
能夠透過 properties 來配置。
減少重複的程式和業務,達到複用的效果。
1. 請求向 Server 發送,前端控制器(Front Controller, 一種設計模式) DispatcherServlet 接收。
2. DispatcherServlet 根據 xxx-servlet.xml 中的配置,對請求 URL 進行解析後得到請求 URI。
接著調用 HandlerMapping 獲得該 Handler 配置的所有相關對象及對應的攔截器,
完成後,以 HandlerExecutionChain 對象的形式返回。
3. DispatcherServlet 根據上面 Mapping 獲得的 Handler (Controller),
選擇一個合適的HandlerAdapter,並開始執行對應的攔截器的 preHandler() 方法 。
4. 開始執行 Handler ,針對 Request 模型塞入參數, 過程中 Spring 還會做一些額外處理 :
4.1 資料型態轉換: String 轉換成 int 、long 、Date 等等。
4.2 資料驗證: 資料是否有效 (@Vaild
),並將驗證結果塞入 BindingResult 的 error 中。
4.3 資料格式化: 字符串轉換成格式化數字或格式化日期。
5. Handler (Controller) 執行完成後,會向 前端控制器 返回一組 ModelAndView 對象。
6. 前端控制器 根據返回的 ModelAndView 找到適合的 ViewResolver 。
7. ViewResolver 透過 Model 渲染 View 並回應給 Client。
除了基本的 HandlerMapping 和 HandlerAdapter,Spring 還有內置的解析器。
依照特殊的請求做出不同的回應,並且也可以透過屬性擴展或替換掉。
Resolver
敘述
異常 - HandlerExceptionResolver
解決異常的策略,在發生錯誤時,將其引導到錯誤視圖或其他目標。
視圖 - ViewResolver
將處理程序的回傳值 String ,轉成其資源對應的 View。
時區 - LocaleResolver
解決 Client 正在使用的時區問題,以配合國際化的環境。
模板佈局 - ThemeResolver
解決 web 應用可以使用的模板。
檔案 - MultipartResolver
解決 web 應用的檔案上傳。
重導 - FlashMapManager
解決 web 應用從一個請求跨越到另一個請求的臨時參數。