提示:个人学习笔记
一、ThymeleafView
springMVC工程中使用Thymeleaf视图解析器,在控制器方法中所返回的视图名(无任何前后缀)
会被解析,拼接上配置文件中Thymeleaf设置的前后缀,然后跳转到视图页面
控制器方法:
//转发到view_test页面
@Controller
public class IndexController {
@RequestMapping("/view_test")
public String testThymeleafView() {
return "view_test";
}
}
view_target.html视图页面:
<a th:href="@{/testThymeleafView}">测试ThymeleafView</a><br>
控制器方法:
//ThymeleafView
@RequestMapping("/testThymeleafView")
public String testView(){
return "target";
}
实现流程:
1、Controller1 : view_test的请求映射地址,该控制器方法返回视图名view_test
2、view_test.html:超链接(请求映射testThymeleafView)
3、Controller2 : testThymeleafView的请求映射地址,该控制器方法返回视图名target
二、InternalResourceView(转发视图)
所在控制器方法返回的视图以forward:
为前缀,如forward:/path
,此时springMVC所配置的Thymeleaf解析器不会解析,会自动创建一个InternalResourceView
,去掉前缀forward:
,然后跳转到/path
页面
view_target.html视图页面:
<a th:href="@{/testForward}">测试InternalResourceView</a>
控制器方法:
//InternalResourceView
@RequestMapping("/testForward")
public String testForword(){
return "forward:/testThymeleafView"; //转发到testThymeleafView请求映射
}
三、RedirectView(重定向)
以redirect:
为前缀,形如redirect:/path
view_target.html视图页面:
<a th:href="@{/testRedirectView}">测试RedirectView</a>
控制器方法:
//RedirectView
@RequestMapping("/testRedirectView")
public String testRedirect(){
return "redirect:/testThymeleafView"; //重定向到testThymeleafView请求映射,然后实现跳转
}
WEB-INF下的视图只能由服务器内部资源访问,不能够被重定向的资源(重定向后属于两次请求,两个作用域)所访问,在springMVC工程如果配置的是ThymeleafView视图解析器,则所有页面都会经过该解析器,只能通过转发来访问WEB-INF下的视图页面
如果控制器方法中只设置了视图页面跳转,无其他参数处理,则可以将请求地址映射和视图名使用<mvc:view-controller path="" view-name=""/>
在配置文件中配置,如上述,可配置为
<mvc:view-controller path="/view_test" view-name="view_test"/>
path:请求地址
view-name:请求地址所处理的视图名
在设置视图控制器后,需要在配置文件中配置<mvc:annotation-driven/>
注解驱动,否则其他控制器方法的请求无法处理,报404错误