• 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;  
    

    }

  • 相关阅读:
    GuavaCache简介(一)
    四层、七层负载均衡的区别
    腾讯云服务器 Centos6.5 安装 nginx1.12.0
    tomcat8性能优化
    JAVA 正则表达式的三种模式: 贪婪, 勉强和占有的讨论
    java中值传递和引用传递
    架构师书籍
    大型网站架构系列:20本技术书籍推荐
    RabbitMQ
    支付宝付款流程
  • 原文地址:https://www.cnblogs.com/lezijie/p/13590444.html
Copyright © 2020-2023  润新知