SpringMVC中的檢視是View
介面,檢視的作用渲染資料,將模型Model
中的資料展示給使用者
SpringMVC檢視的種類很多,預設有轉發檢視和重定向檢視
當工程引入jstl
的依賴,轉發檢視會自動轉換為JstlView
若使用的檢視技術為Thymeleaf
,在SpringMVC的配置檔案中配置了Thymeleaf
的檢視解析器,由此檢視解析器解析之後所得到的是ThymeleafView
ThymeleafView
當控制器方法中所設定的檢視名稱沒有任何字首時,此時的檢視名稱會被SpringMVC配置檔案中所配置的檢視解析器解析,檢視名稱拼接檢視字首和檢視字尾所得到的最終路徑,會通過轉發的方式實現跳轉
轉發檢視
SpringMVC中預設的轉發檢視是InternalResourceView
SpringMVC中建立轉發檢視的情況:
當控制器方法中所設定的檢視名稱以"forward:"
為字首時,建立InternalResourceView
檢視,此時的檢視名稱不會被SpringMVC配置檔案中所配置的檢視解析器解析,而是會將字首"forward:"
去掉,剩餘部分作為最終路徑通過轉發的方式實現跳轉
index.html
<a th:href="@{/testForward}">測試請求轉發</a>
控制器
@RequestMapping("/testForward")
public String testForward(){
return "forward:/wel";
}
@RequestMapping("/wel")
public String toWelcome() {
return "welcome";
}
主頁超連結對/testForward
的請求到達控制器後被轉發給/wel
,注意到位址列路徑是/testForward
而不是/wel
實現了請求轉發。
重定向檢視
SpringMVC中預設的重定向檢視是RedirectView
當控制器方法中所設定的檢視名稱以"redirect:"
為字首時,建立RedirectView
檢視,此時的檢視名稱不會被SpringMVC配置檔案中所配置的檢視解析器解析,而是會將字首"redirect:"
去掉,剩餘部分作為最終路徑通過重定向的方式實現跳轉
index.html
<a th:href="@{/testRedirect}">測試請求重定向</a>
控制器
@RequestMapping("/testRedirect")
public String testRedirect(){
return "redirect:/wel";
}
@RequestMapping("/wel")
public String toWelcome() {
return "welcome";
}
主頁超連結對/testRedirect
的請求到達控制器後被轉發給/wel
,注意到位址列路徑是/wel
,實現了請求重定向。
檢視控制器view-controller
當控制器方法中,僅僅用來實現頁面跳轉,即只需要設定檢視名稱時,可以將處理器方法使用view-controller
標籤進行表示
<!--
path:設定處理的請求地址
view-name:設定請求地址所對應的檢視名稱
-->
<mvc:view-controller path="" view-name=""></mvc:view-controller>
springMVC.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.springmvc.gonghr.controller"></context:component-scan>
<!-- 配置Thymeleaf檢視解析器 -->
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="order" value="1"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateEngine">
<bean class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver">
<bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<!-- 檢視字首 -->
<property name="prefix" value="/WEB-INF/templates/"/>
<!-- 檢視字尾 -->
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8" />
</bean>
</property>
</bean>
</property>
</bean>
<!-- 設定主頁檢視 -->
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>
</beans>
注意:當SpringMVC中設定任何一個view-controller
時,其他控制器中的請求對映將全部失效,此時需要在SpringMVC的核心配置檔案中設定開啟mvc註解驅動的標籤:<mvc:annotation-driven />