SpringMVC视图

springmvc.xml中配置thymeleaf视图解析

<!-- 配置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>

 

 

SpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model中的数据展示给用户
SpringMVC视图的种类很多,默认有转发视图和重定向视图
当工程引入jstl的依赖,转发视图会自动转换为JstlView
若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,由此视
图解析器解析之后所得到的是ThymeleafView

1、ThymeleafView

当控制器方法中所设置的视图名称没有任何前缀时,此时的视图名称会被SpringMVC配置文件中所配置
的视图解析器解析,视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转

@RequestMapping("/testHello")
public String testHello(){
     return "hello";
}

2.转发视图:InternalResourceView

SpringMVC中默认的转发视图是InternalResourceView
SpringMVC中创建转发视图的情况:
当控制器方法中所设置的视图名称以"forward:"为前缀时,创建InternalResourceView视图,此时的视
图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"forward:"去掉,剩余部
分作为最终路径通过转发的方式实现跳转
例如"forward:/","forward:/employee"

    @RequestMapping("/testThy")
    public String testview(){
        return "success";
    }
    @RequestMapping("/testforward")
    public String testforward(){
        return "forward:test_view";
    }

以下两个链接都跳转到seccess页面

<a th:href="testThy">testThy</a>
<a th:href="testforward">testforward</a>

浏览器地址栏中:****/testforward

3、重定向视图:RedirectView

SpringMVC中默认的重定向视图是RedirectView
当控制器方法中所设置的视图名称以"redirect:"为前缀时,创建RedirectView视图,此时的视图名称不
会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"redirect:"去掉,剩余部分作为最
终路径通过重定向的方式实现跳转
例如"redirect:/","redirect:/employee"

   @RequestMapping("/testThy")
    public String testview(){
        return "success";
    }
    @RequestMapping("/testRedirect")
    public String testRedirect(){
        return "redirect:testThy";
    }
<a th:href="testThy">testThy</a>
<a th:href="testRedirect">Redirect</a>

两个链接都跳转到seccess页面

浏览器地址栏中:****/testThy

4.SpringMVC中的视图控制器

当控制器里面的方法,仅仅用来实现页面跳转,即只需要设置视图名称时,可以将处理器方法使用view-controller标签进行表示

    <!--
       path:设置处理的请求地址
       view-name:设置请求地址对应的视图名称
    -->
    <mvc:view-controller path="/" view-name="index"></mvc:view-controller>

注:
当SpringMVC中设置任何一个view-controller时,其他控制器中的请求映射将全部失效,此时需
要在SpringMVC的核心配置文件中设置开启mvc注解驱动的标签:
<mvc:annotation-driven />

5.JSP  视图解析器:InternalResourceViewResolver

InternalResourceViewResolver与SpringResourceTemplateResolver不同,前者是用来解析jsp的

                    <bean
                        class="org.thymeleaf.spring5.templateresolver.InternalResourceViewResolver">
                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>
                        <!-- 视图后缀 -->
                        <property name="suffix" value=".jsp"/>
                    </bean>

 

 

 

阅读剩余
THE END