1、作用
处理器方法返回 ModelAndView 时,需在 setViewName()指定的视图前添加 forward:,且 此时的视图不再与视图解析器一同工作(不能同时工作),这样可以在配置了解析器时指定不同位置的视图。 视图页面必须写出相对于项目根的路径。forward 操作不需要视图解析器。 处理器方法返回 String,在视图路径前面加入 forward: 视图完整路径。
2、请求转发(setViewName方法后加forward)

//mv.setViewName("forward:show");不能这样写,因为添加了forward或者redirect,视图解析器将不会工作mv.setViewName("forward:/WEB-INF/view/show.jsp");
3、重定向(setViewName方法后加redirect)
/*受保护资源不能通过url访问*///mv.setViewName("redirect:/WEB-INF/view/show.jsp");(不能这样写)mv.setViewName("redirect:showOut.jsp");
4、示例
(1)控制器
@Controllerpublic class TestClass {@RequestMapping("/showMessageForward.do")@ResponseBodypublic ModelAndView test01(String name,Integer age){ModelAndView mv = new ModelAndView();mv.addObject("myName",name);mv.addObject("myAge",age);mv.setViewName("forward:/WEB-INF/view/show.jsp");return mv;}@RequestMapping("/showMessageRedirect.do")@ResponseBodypublic ModelAndView test02(String name,Integer age){ModelAndView mv = new ModelAndView();mv.addObject("myName",name);mv.addObject("myAge",age);/*受保护资源不能通过url访问*///mv.setViewName("redirect:/WEB-INF/view/show.jsp");mv.setViewName("redirect:showOut.jsp");return mv;}}
(2)提交数据页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><div align="center"><form action="showMessageForward.do" method="post">name:<input type="text" name="name">age:<input type="text" name="age"><input type="submit" value="提交"></form></div><div align="center"><form action="showMessageRedirect.do" method="post">name:<input type="text" name="name">age:<input type="text" name="age"><input type="submit" value="提交"></form></div></body></html>
(3)受保护资源show.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><div align="center">${myName}<br/>${myAge}</div></body></html>
(4)不受保护资源showOut.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><div align="center">${param.myName}<br/>${param.myAge}</div></body></html>
