ModelAndView
设置 ModelAndView 对象 , 根据 view 的名称 , 和视图解析器跳到指定的页面 .
页面 : {视图解析器前缀} + viewName +{视图解析器后缀}
- <!-- 视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- id="internalResourceViewResolver">
- <!-- 前缀 -->
- <property name="prefix" value="/WEB-INF/jsp/" />
- <!-- 后缀 -->
- <property name="suffix" value=".jsp" />
- </bean>
对应的 controller 类
- public class ControllerTest1 implements Controller {
- public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
- // 返回一个模型视图对象
- ModelAndView mv = new ModelAndView();
- mv.addObject("msg","ControllerTest1");
- mv.setViewName("test");
- return mv;
- }
- }
- ServletAPI
通过设置 ServletAPI , 不需要视图解析器 .
通过 HttpServletResponse 进行输出
通过 HttpServletResponse 实现重定向
通过 HttpServletResponse 实现转发
- @Controller
- public class ResultGo {
- @RequestMapping("/result/t1")
- public void test1(HttpServletRequest req, HttpServletResponse rsp) throws IOException {
- rsp.getWriter().println("Hello,Spring BY servlet API");
- }
- @RequestMapping("/result/t2")
- public void test2(HttpServletRequest req, HttpServletResponse rsp) throws IOException {
- rsp.sendRedirect("/index.jsp");
- }
- @RequestMapping("/result/t3")
- public void test3(HttpServletRequest req, HttpServletResponse rsp) throws Exception {
- // 转发
- req.setAttribute("msg","/result/t3");
- req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,rsp);
- }
- }
- SpringMVC
通过 SpringMVC 来实现转发和重定向 - 无需视图解析器;
测试前, 需要将视图解析器注释掉
- @Controller
- public class ResultSpringMVC {
- @RequestMapping("/rsm/t1")
- public String test1(){
- // 转发
- return "/index.jsp";
- }
- @RequestMapping("/rsm/t2")
- public String test2(){
- // 转发二
- return "forward:/index.jsp";
- }
- @RequestMapping("/rsm/t3")
- public String test3(){
- // 重定向
- return "redirect:/index.jsp";
- }
- }
通过 SpringMVC 来实现转发和重定向 - 有视图解析器;
重定向 , 不需要视图解析器 , 本质就是重新请求一个新地方嘛 , 所以注意路径问题.
可以重定向到另外一个请求实现 .
- @Controller
- public class ResultSpringMVC2 {
- @RequestMapping("/rsm2/t1")
- public String test1(){
- // 转发
- return "test";
- }
- @RequestMapping("/rsm2/t2")
- public String test2(){
- // 重定向
- return "redirect:/index.jsp";
- //return "redirect:hello.do"; //hello.do 为另一个请求 /
- }
- }
来源: http://www.bubuko.com/infodetail-3446446.html