请求转发和重定向
当处理器对请求处理完毕后,向其他资源跳转时,有两种跳转方式:请求转发 与 重定向 。而根据所要跳转的资源类型,又分为两类:跳转到页面与跳转到其他处理器。
注意,对于请求转发的页面,可以是 WEB-INF 中的页面;而重定向的页面,是不能为 WEB-INF中的页面。因为重定向相当于用户再次发出一次请求,而用户是不能直接访问 WEB-INF 中资源的。
springmvc框架把原来的servlet中的请求转发和重定向进行了封装,现在可以使用简单方式实现了。
forward:表示转发,实现request.getRequestDispatcher("xx.jsp").forward()
redirect:表示重定向,实现response.sendRedirect("xxx.jsp")
forward,请求转发
处理器方法返回 ModelAndView,实现转发 forward操作
语法:setViewName("forward:视图文件完整路径")
forward特点:不和视图解析器一同使用,就当项目中没有视图解析器
1
2
3
对应控制器
@Controller
public class MyController {
@RequestMapping(value = "/doForward.do")
public ModelAndView doSome(){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","-----欢迎使用spring mvc做web开发------" );
mv.addObject("fun","执行的是doSome方法");
//=====================重点===========================
//使用视图解析器
//mv.setViewName("show");
//显式转发
mv.setViewName("forward:WEB-INF/view/show.jsp");
//=====================重点===========================
return mv;
}
}