(一)Thymeleaf视图
何时使用:当控制器方法中所设置的视图名称没有任何前缀时,此时的视图名称会被SpringMVC配置文件中所配置的视图解析器解析。
如何使用:视图名称拼接视图前缀和视图后缀所得到的最终路径。
使用何种方式:会通过转发的方式实现跳转。
@RequestMapping("/testHello")
public String testHello(){
return "hello";
}
(二)转发视图
何时使用:SpringMVC中默认的转发视图InternalResourceView
如何使用:SpringMVC中创建转发视图的情况:
当控制器方法中所设置的视图名称以"forward:"为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"forward:"去掉,剩余部分作为最终路径通过转发的方式实现跳转
@RequestMapping("/testForward")
public String testForward(){
//这里转发也只能转发到一个请求而不能转发的具体的html页面
//因为HTML页面需要被thymeleaf解析
return "forward:/TestThymeleafView";
}
注意:其中的注释需要注意,无法转发到具体页面
(三)重定向视图
何时使用:SpringMVC中默认的重定向视图是RedirectView
如何使用:当控制器方法中所设置的视图名称以"redirect:"为前缀时,创建RedirectView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"redirect:"去掉,剩余部分作为最终路径通过重定向的方式实现跳转
@RequestMapping("/testRedirect")
public String testRedirct(){
//这里重定向也只能转发到一个请求而不能重定向的具体的html页面
//因为HTML页面需要被thymeleaf解析
return "redirect:/TestThymeleafView";
}
(四)请求转发与重定向的区别
- 从表象来看,请求转发是一次请求(浏览器一次,服务器内部一次),地址栏不会发生改变,而重定向是两次请求(浏览器两次),地址栏发生改变。
- 从共享域对象来看:请求转发可以共享request域中的对象,因为就一次请求。而重定向无法共享request域中的对象,因为是两次请求。
- 从访问内容来看:请求转发可以访问web-inf中的资源而重定向不能访问,但重定向可以跨域访问,访问外部资源而请求转发不能。