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为另一个请求/
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。