SpringMVC的视图

165 阅读3分钟

一、前言

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

二、ThymeleafView

当控制器方法中所设置的视图名称没有任何前缀的时候,此时的视图名称会被SpringMVC配置文件中所配置的视图解析器(例如Thymeleaf)解析,视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转。有forward前缀,则使用的是转发视图,有Redirect前缀的时候,使用的是重定向视图。

三、 InternalRResourceView

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

例如"forwaerd:/","forward:/employee"

四、重定向视图

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

转发和重定向的区别:
1、转发中,浏览器只发送了一次请求,而在重定向中,浏览器发送了两次请求。
2、转发地址栏依然是第一次请求的地址,而重定向的地址会改变。
3、转发中的request中的数据可以获取到,而重定向无法使用,因为是两次请求,两个不同的request。
4、转发可以访问web-info中的资源,而重定向不可以,因为web-info中的资源具有隐藏性,转发是在服务器端进行的,所以可以访问。 5、重定向可以跨域,而转发不可以,因为转发是在服务器内部的,所以只能访问服务器内部的资源。

五、视图控制器view-controller

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

image.png

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