Spring mvc结果跳转方法详解
ModelAndView
设置ModelAndView对象,根据view的名称,和视图解析器跳到指定的页面.
页面:{视图解析器前缀}+viewName+{视图解析器后缀}
对应的controller类
publicclassControllerTest1implementsController{ publicModelAndViewhandleRequest(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsException{ //返回一个模型视图对象 ModelAndViewmv=newModelAndView(); mv.addObject("msg","ControllerTest1"); mv.setViewName("test"); returnmv; } }
ServletAPI
通过设置ServletAPI,不需要视图解析器.
- 通过HttpServletResponse进行输出
- 通过HttpServletResponse实现重定向
- 通过HttpServletResponse实现转发
@Controller publicclassResultGo{ @RequestMapping("/result/t1") publicvoidtest1(HttpServletRequestreq,HttpServletResponsersp)throwsIOException{ rsp.getWriter().println("Hello,SpringBYservletAPI"); } @RequestMapping("/result/t2") publicvoidtest2(HttpServletRequestreq,HttpServletResponsersp)throwsIOException{ rsp.sendRedirect("/index.jsp"); } @RequestMapping("/result/t3") publicvoidtest3(HttpServletRequestreq,HttpServletResponsersp)throwsException{ //转发 req.setAttribute("msg","/result/t3"); req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,rsp); } }
SpringMVC
通过SpringMVC来实现转发和重定向-无需视图解析器;
测试前,需要将视图解析器注释掉
@Controller publicclassResultSpringMVC{ @RequestMapping("/rsm/t1") publicStringtest1(){ //转发 return"/index.jsp"; } @RequestMapping("/rsm/t2") publicStringtest2(){ //转发二 return"forward:/index.jsp"; } @RequestMapping("/rsm/t3") publicStringtest3(){ //重定向 return"redirect:/index.jsp"; } }
通过SpringMVC来实现转发和重定向-有视图解析器;
重定向,不需要视图解析器,本质就是重新请求一个新地方嘛,所以注意路径问题.
可以重定向到另外一个请求实现
@Controller publicclassResultSpringMVC2{ @RequestMapping("/rsm2/t1") publicStringtest1(){ //转发 return"test"; } @RequestMapping("/rsm2/t2") publicStringtest2(){ //重定向 return"redirect:/index.jsp"; //return"redirect:hello.do";//hello.do为另一个请求/ } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。