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

一、前言

常见的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跳转页面方式
 

Thinkingcao CSDN认证博客专家 Java Spring Boot 架构
CSDN2019年度博客之星、博客专家,专注架构、Java、Spring、SpringBoot、SpringCloud、微服务、分布式、中间件、源码分析、JVM性能调优、K8S等领域
微信搜索公众号:「Thinking曹」,一个执着于架构的JAVA基层码农,每天带你学习新知识。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值