Spring 檢視和檢視解析器簡介
什麼是 Spring 檢視和檢視解析器?
Spring MVC(Model View Controller)是 Spring 中一個重要的組成部分,而 Spring 檢視和檢視解析器則是 Spring MVC 中的組成部分。在介紹 Spring 檢視和檢視解析器前,我們先了解下在 Spring MVC 框架中,一個 Web 請求所需經歷的六個階段:
- 請求會首先被 Spring MVC 的前端請求分發器(Dispatcher)攔截。該攔截器是一個 Servlet, 需要在 web.xml 中配置,所有符合所配置的 URL 樣式的訪問請求,將都會被該攔截器攔截。Spring 提供了預設的分發器 org.springframework.web.servlet.DispatcherServlet,您可以根據需要,決定是否需要定製自己的分發器。
- 在接收到訪問請求後,分發器會根據開發人員在 Spring 配置檔案或程式碼中的註解(Annotation),來查詢合適的控制器。
- 分發器在查詢到合適的控制器後,將請求轉交給該控制器處理。
- 通常,控制器會呼叫相應服務類來處理業務邏輯,在將請求處理後,控制器需返回處理後的結果資料模型(Model)以及下一個需要顯示的檢視名。
- 在控制器處理結束並返回模型和檢視名之後,Spring 會依次呼叫 Spring 容器中所註冊的檢視解析器,來查詢符合條件的檢視。
- 在獲得 Spring 檢視後,Spring 會根據該檢視的配置資訊,顯示該檢視。
圖 1.Spring MVC 處理流程
通過以上 Spring MVC 的介紹,我們可以發現,檢視和檢視解析器將出現在整個請求處理流程中的最後部分。那麼到底什麼是檢視和檢視解析器?簡而言之,檢視是指 Spring MVC 中的 V(View),而檢視解析器的功能則是依據指定的規則來查詢相應的檢視。
常用檢視和檢視解析器簡介
在開發中,檢視通常就是 JSP、Velocity 等。Spring 預設提供了多種檢視解析器,比如,我們可以使用最常用解析器 InternalResourceViewResolver 來查詢 JSP 檢視(與之相對應的檢視類為 InternalResourceView)。通常,一個檢視解析器只能查詢一個或多個特定型別的檢視,在遇到 Spring 不支援的檢視或者我們要自定義檢視查詢規則的情況下,我們就可以通過擴充套件 Spring 來自定義自己所需的檢視解析器。目前,檢視解析器都需要實現介面 org.springframework.web.servlet.ViewResolver, 它包含方法 resolveViewName,該方法會通過檢視名查詢並返回 Spring 檢視物件。表 1 列出了常用的 Spring 檢視解析器。
表 1.Spring 常用檢視解析器列表
檢視解析器 | 描述 |
---|---|
XmlViewResolver | 介面 ViewResolver 的實現,從 XML 配置檔案中查詢檢視實現(預設 XML 配置檔案為 /WEB-INF/views.xml) |
ResourceBundleViewResolver | 介面 ViewResolver 的實現,用於從 properties 檔案中查詢檢視。 |
UrlBasedViewResolver | 介面 ViewResolver 的實現,用於根據請求的 URL 路徑返回相應的檢視,該檢視需為抽象類 AbstractUrlBasedView 的實現,它還有些子類,如 InternalResourceView 和 JstlView 等 . |
InternalResourceViewResolver | UrlBasedViewResolver 的子類,通常用於查詢 JSP(類 InternalResourceView)和 JSTL(類 JstlView,InternalResourceView 的子類)等檢視。 |
VelocityViewResolver /FreeMarkerViewResolver | UrlBasedViewResolver 的子類分別用於支援 Velocity(類 VelocityView)和 FreeMark 檢視(類 FreeMarkerView)。 |
ContentNegotiatingViewResolver | 介面 ViewResolver 的實現,用於根據請求檔案的字尾名或請求的 header 中的 accept 欄位查詢檢視。 |
在多數專案中,InternalResourceViewResolver 是最常用的,該解析器可以返回指定目錄下指定字尾的檔案,它支援 JSP 及 JSTL 等檢視技術,但是用該檢視解析器時,需要注意設定好正確的優先順序,因為該檢視解析器即使沒有找到正確的檔案,也會返回一個檢視,而不是返回 null,這樣優先順序比該檢視解析器低的解析器,將不會被執行。
在 Web 開發中,我們的前端顯示可以是 JSP、Excel、Velocity 等,在 Spring 中,不同的前端顯示技術都有其對應的 Java 檢視類,正如表 1 所提到的,InternalResourceView 可以代表 JSP 檢視,FreeMarkerView 代表 FreeMarker 檢視。目前,Spring 支援多種技術開發的檢視,包括 JSP、JSTL、Excel,Velocity 等,在多數專案中,使用者並不需要自定義自己的檢視。
本文整理自:開發 Spring 自定義檢視和檢視解析器
整理人:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- day04-檢視和檢視解析器
- MySQL 檢視簡介MySql
- 配置多檢視解析器
- MySQL檢視簡介與操作MySql
- springmvc配置thymeleaf檢視解析器SpringMVC
- [轉載]SQLServer之檢視簡介SQLServer
- ASP.NET MVC – 檢視簡介ASP.NETMVC
- 手動配置檢視解析器流程分析
- MySQL檢視介紹MySql
- Flutter檢視基礎簡介--Widget、Element、RenderObjectFlutterObject
- Oracle普通檢視和物化檢視的區別Oracle
- Django檢視之檢視類和中介軟體Django
- drf : 通用檢視類和(GenericAPIView)5個檢視擴充套件類,九個檢視子類,檢視集。APIView套件
- 11 UML中的邏輯檢視、程序檢視、實現檢視、部署檢視
- django 的類檢視和函式檢視-雜談Django函式
- [Django REST framework - 檢視元件之檢視基類、檢視擴充套件類、檢視子類、檢視集]DjangoRESTFramework元件套件
- Spring 指南(瞭解檢視模板)Spring
- Spring MVC教程——檢視閱讀SpringMVC
- ASP.NET Core 5.0 MVC中的檢視分類——佈局檢視、啟動檢視、具體檢視、分部檢視ASP.NETMVC
- 【MVIEW】Oracle通過物化檢視同步表資料及簡介ViewOracle
- linux程式和埠檢視Linux
- JavaScript 檢視全文和收起JavaScript
- mysql建立索引和檢視MySql索引
- Flask URL和檢視(一)Flask
- Django的檢視和模板Django
- Linux檢視環境變數當前資訊和檢視命令Linux變數
- Python:檢視已安裝模組 和 檢視可匯入模組Python
- MYSQL 檢視MySql
- 檢視助手
- 物化檢視
- 09檢視
- 檢視層
- gc 檢視GC
- linux 檢視UUID和MAC地址LinuxUIMac
- [譯] 通過檢視控制器容器和子檢視控制器避免龐大的檢視控制器
- Day70 Spring MVC的響應方式,檢視解析器以及上傳下載和編碼過濾器SpringMVC過濾器
- git簡略形式檢視提交歷史Git
- Linux基楚操作指引【檢視版本、檢視路徑、檢視內容、編輯檔案】Linux
- Django - 檢視層 - 檢視函式及快捷方式Django函式