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 />