SpringMVC框架如何实现请求转发和重定向呢?
跳转的方式
- 请求转发
- 重定向
案例实操
Springmvc 默认采用服务器内部转发的形式展示页面信息。同样也支持重定向 页面。
重定向
重定向到 jsp 中文会出现乱码
/**
* 重定向到 jsp 中文会出现乱码
*/
@RequestMapping("/queryView1")
public String queryView1(){
return "redirect:v1.jsp?a=xxx&b=123456";
}
重定向到 jsp 中文乱码解决
/**
* 重定向到 jsp 中文乱码解决
*/
@RequestMapping("/queryView3")
public String queryView3(RedirectAttributes attr){
attr.addAttribute("a", "xxx");
attr.addAttribute("b", "xxx");
return "redirect:v1.jsp";
}
重定向到 jsp ModelAndView1
/**
* 重定向到 jsp ModelAndView1
*/
@RequestMapping("/queryView4")
public ModelAndView queryView4(RedirectAttributes attr){
ModelAndView mv=new ModelAndView();
attr.addAttribute("a", "xxx");
attr.addAttribute("b", "xxx");
mv.setViewName("redirect:v1.jsp");
return mv;
}
重定向到 jsp ModelAndView2 mv 携带参数
/**
* 重定向到 jsp ModelAndView2 mv 携带参数
*/
@RequestMapping("/queryView5")
public ModelAndView queryView5(){
ModelAndView mv=new ModelAndView();
mv.setViewName("redirect:v1.jsp");
mv.addObject("a", "xxx");
mv.addObject("b", "xxx");
System.out.println("重定向。。。");
return mv;
}
重定向到 Controller 并传递参数
/**
* 重定向到 Controller 并传递参数
*/
@RequestMapping("/queryView6")
public String queryView6(RedirectAttributes attr){
attr.addAttribute("a", "xxx");
attr.addAttribute("b", "xxx");
return "redirect:/user/queryUserById.do";
}
重定向到 Controller modelandview
/**
* 重定向到 Controller modelandview
* @return
*/
@RequestMapping("/queryView7")
public ModelAndView queryView7(){
ModelAndView mv=new ModelAndView();
mv.setViewName("redirect:/user/queryUserById.do");
mv.addObject("a", "xxx");
mv.addObject("b", "xxx");
return mv;
}
重定向页面值获取 ${param.a}|||${param.b}
转发到视图
/**
* 转发到视图
*/
@RequestMapping("/queryView8")
public ModelAndView queryView8(){
ModelAndView mv=new ModelAndView();
mv.setViewName("v1");
mv.addObject("a", "xxx");
mv.addObject("b", "xxx");
return mv;
}
请求转发
/**
* 转发到 controller
*/
@RequestMapping("/queryView9")
public ModelAndView queryView9(HttpServletRequest request){
ModelAndView mv=new ModelAndView();
mv.setViewName("forward:user/queryUserById2.do?a=xxx&b=xxx");
return mv;
}
页面值获取 ${a}||${b}
扩展
获取 request,response 对象
对于我们的方法默认方法的参数是空的,这时候要想获取 request,response 对象如何获取?
public ModelAndView queryUser(HttpServletRequest request,HttpServletResponse response){
String userName= request.getParameter("userName");
ModelAndView mv=new ModelAndView();
mv.addObject("userName", userName);
mv.setViewName("request");
return mv;
}
uest,HttpServletResponse response){
String userName= request.getParameter("userName");
ModelAndView mv=new ModelAndView();
mv.addObject("userName", userName);
mv.setViewName("request");
return mv;
}