SpringMVC框架如何实现请求转发和重定向呢?

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;  

}

上一篇:第五章:ModelAndView


下一篇:springMVC全局异常配置