当处理器对请求处理完毕后,向其它资源进行跳转时,有两种跳转方式:请求转发与重定向。而根据所要跳转的资源类型,又可以分为两类:跳转到页面与跳转到其它处理器。注意,对于请求转发的页面,可以是WEB-INF中页面;而重定向的页面,是不能为WEB-INF中的页。因为重定向相当于用户再次发出一次请求,而用户是不能直接访问WEB-INF中的资源。
一、转发forward
语法:setViewName("forward:视图文件的完整路径")
forward特点:不和视图解析器一同使用,就当项目中没有视图解析器
@RequestMapping(value = "/one")
public ModelAndView one()
{
ModelAndView mv = new ModelAndView();
mv.setViewName("forward:two.jsp");//显示转发,可以跳转到WEB-INF之内或之外的文件
return mv;
}
二、重定向redirect
语法:setViewName("redirect:视图文件的完整路径")
redirect特点:不和视图解析器一同使用,就当项目中没有视图解析器
@RequestMapping(value = "/one")
public ModelAndView one()
{
ModelAndView mv = new ModelAndView();
mv.setViewName("redirect:two.jsp");//重定向不能访问WEB-INF里面的文件
return mv;
}
框架对重定向的操作:
1.框架会把Model中的简单类型的数据,转为String使用,作为two.jsp的get请求参数使用。目的是在one和two.jsp两次请求之间传递数据
2.在目标hello.jsp页面可以使用参数集合对象${param}获取请求参数值,例如${param.name}
3.重定向不能访问WEB-INF资源