隐藏

SpringMVC后端Controller页面跳转的三种方式

发布:2021/7/22 16:39:59作者:管理员 来源:本站 浏览次数:803

一、前言

常见的Web开发中,我们在使用SpringMVC框架时,经常遇到多种不同情况下不同的返回方式,有的多种返回页面的方式,也有的是多种返回数据到前端的方式,这篇文章主要总结常见Web开发中针对不同情况返回页面的方式。对于不同情况下,具有返回数据到前端的多种方式请参考我之前写过的一篇SpringBoot相关文章: SpringBoot系列教程(七十):SpringBoot的Controller四种方法返回值类型
二、 根据 String 字符串跳转
1、返回字符串 --- 返回jsp页面

    /**
    * description: 返回字符串 --- 返回jsp页面,JSP通过EL表达式取值
    * @author cao
    * @date 2019年4月10日 下午10:17
    */
    @RequestMapping(value={"/forwardJsp"})
    public String forwardJsp(Model model){
        model.addAttribute("name", "张三");
        return "modules/sys/sysLogin";
    }

2、返回字符串 --- 服务端转发

    /**
    * description: 返回字符串 --- 服务端转发,JSP页面通过EL表达式取值
    * @author cao
    * @date 2019年4月10日 下午10:20
    */
    @RequestMapping(value={"/forward"})
    public String forward(Model model){
        model.addAttribute("name", "张三");
        return "forward:forwardJsp";
    }

3、返回字符串 --- 客户端重定向    

    /**
    * description: 返回字符串 --- 客户端重定向
    * @author cao
    * @date 2019年4月10日 下午10:27
    */
    @RequestMapping(value="/redirect")
    public String redirect(){
        return "redirect:"+"/forward";
    }

三、根据 request 或 response 进行跳转
1、返回 void --- 请求转发(request转发)      

    /**
    * description: 返回 void --- 请求转发(request转发)
    * @author cao
    * @date 2019年4月10日 下午10:26
    */
    @RequestMapping(value="/requestForward")
    public void requestForward(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
        request.setAttribute("name", "请求转发(服务端转发)");
        request.getRequestDispatcher("/forward").forward(request, response);
    }

2、返回 void --- 重定向 (response)

    /**
    * description: 返回 void --- 重定向 (response)
    * @author cao
    * @date 2019年4月10日 下午10:29
    */
    @RequestMapping(value="/response")
    public void response(HttpServletResponse response) throws IOException{
        response.sendRedirect("/forwardJsp");
    }

3、返回 void --- Json字符串

    /**
    * description: 返回 void --- Json字符串
    * @author cao
    * @date 2019年4月10日 下午10:30
    */
    @RequestMapping(value="/responseJson")
    public void responseJson(HttpServletResponse response) throws IOException{
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write("json串");
    }

四、根据 ModelAndView 对象进行跳转
1、返回对象 ModelAndView --- 返回 jsp 页面  

    /**
    * description: 返回对象 ModelAndView --- 返回 jsp 页面
    * @author cao
    * @date 2019年4月10日 下午10:32
    */
    @RequestMapping(value="/modelAndViewJsp")
    public ModelAndView modelAndViewJsp(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("modules/sys/sysLogin");//指定跳转的页面
        modelAndView.addObject("name","李四");  //绑定传递的数据       
        return modelAndView;
    }

2、返回对象 ModelAndView --- 服务端转发

    /**
    * description: 返回对象 ModelAndView --- 服务端转发
    * @author cao
    * @date 2019年4月10日 下午10:37
    */
    @RequestMapping(value="/modelAndViewForward")
    public ModelAndView modelAndViewForward(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("forward:/forwardJsp");
        modelAndView.addObject("name","李四");  //绑定传递的数据     
        return modelAndView;
    }

3、返回对象 ModelAndView --- 重定向  

    /**
    * description: 返回对象 ModelAndView --- 重定向
    * @author cao
    * @date 2019年4月10日 下午10:40
    */
    @RequestMapping(value="/modelAndViewRedirect")
    public ModelAndView modelAndViewRedirect(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("redirect:/forwardJsp");
        modelAndView.addObject("name","李四");  //绑定传递的数据     
        return modelAndView;
    }

参考资料: forward请求转发和redirect重定向的区别图解整理

                   SpringMVC跳转页面方式