1 请求转发
a String形式的转发
//String形式的转发
@RequestMapping(value="/toViewByString.do")
public String toViewByString(HttpServletRequest request){
request.setAttribute("name", "toString");
return "success";
}
b ModelAndView形式的转发
//ModelAndView形式的转发
@RequestMapping(value="/toViewByModelAndView.do")
public ModelAndView toViewByModelAndView(){
ModelAndView mav=new ModelAndView();
mav.setViewName("success");
return mav;
}
c 通过forward请求转发
//通过forward请求转发
@RequestMapping(value="/redirectByRuqest.do")
public void redirectByRuqest(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
request.getRequestDispatcher("toRedirect.do").forward(request, response);
}
2 重定向
a 路径前加redirect
/**
* 重定向
* RedirectAttributes 是一个容器,用来储存参数
* addFlashAttribute()方法设置的参数是不出现在请求的路径中的
* 可以通过RequestContextUtils.getInputFlashMap(request)获取Map集合
* 再通过集合的key值获取adFlashAttribute()方法设置的值
* addAttribute()方法设置的参数会出现在路径的,
* 可以通过request.getParameter()方法去获取addAttribute()方法设置的参数
* @param request
* @return
*/
@RequestMapping(value="/redirectByString.do")
public String redirectByString(RedirectAttributes redirectAttributes){
redirectAttributes.addFlashAttribute("userName", "123");
redirectAttributes.addAttribute("password", "123");
return "redirect:toRedirect.do";
}
@RequestMapping(value="/toRedirect.do")
public String toRedirect(HttpServletRequest request){
String userName=request.getParameter("userName");
String password=request.getParameter("password");
Map<String,?>params=RequestContextUtils.getInputFlashMap(request);
if(params!=null){
String pass=(String)params.get("userName");
System.out.println(pass);
}
return "success";
}
b 通过modelAndView进行重定向,在路径前必须添加redirect
/**
* 重定向
* 通过modelAndView进行重定向,在路径前必须添加redirect,如果要传入参数,要么放在路径的后面
* 要么把参数添加到modelAndView对象中。
* 如果在Java的方法里,想获取传过来的参数,用request.getParameter()方法获取即可
* @return
*/
@RequestMapping(value="/redirectViewByModelAndView.do")
public ModelAndView redirectViewByModelAndView(){
ModelAndView mav=new ModelAndView();
mav.setViewName("redirect:toRedirect.do?userName=admin");
mav.addObject("password", "1234");
//获取mav通过addObject设置的值
System.out.println(mav.getModel().get("password"));
return mav;
}
c 通过sendRedirect重定向
//通过sendRedirect重定向
@RequestMapping(value="/redirectByResponse.do")
public void redirectByResponse(HttpServletRequest request,HttpServletResponse response) throws IOException{
response.sendRedirect("toRedirect.do?userName=test");
}