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

 更新时间:2023年10月25日 14:50:02   作者:Thinkingcao  
这篇文章主要介绍了SpringMVC后端Controller页面跳转的三种方式汇总,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、前言

常见的Web开发中,我们在使用SpringMVC框架时,经常遇到多种不同情况下不同的返回方式,有的多种返回页面的方式,也有的是多种返回数据到前端的方式

这篇文章主要总结常见Web开发中针对不同情况返回页面的方式。

二、根据 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;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringCloud eureka(server)微服务集群搭建过程

    SpringCloud eureka(server)微服务集群搭建过程

    这篇文章主要介绍了微服务SpringCloud-eureka(server)集群搭建, 项目搭建的主要步骤和配置就是创建项目和引入pom依赖,本文通过图文示例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • SpringBoot整合Mysql和Redis的详细过程

    SpringBoot整合Mysql和Redis的详细过程

    这篇文章主要介绍了SpringBoot整合Mysql和Redis的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 使用Sentinel实现流控和服务降级的代码示例

    使用Sentinel实现流控和服务降级的代码示例

    Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,本文将详细为大家介绍如何使用Sentinel实现流控和服务降级,文中有相关的代码示例,需要的朋友可以参考下
    2023-05-05
  • Spring Native 基础环境搭建过程

    Spring Native 基础环境搭建过程

    Spring Native可以通过GraalVM将Spring应用程序编译成原生镜像,提供了一种新的方式来部署Spring应用,本文介绍Spring Native基础环境搭建,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • java编程之xpath介绍

    java编程之xpath介绍

    这篇文章主要介绍了java编程之xpath介绍,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • Java修饰符 abstract,static,final 的区别详解

    Java修饰符 abstract,static,final 的区别详解

    以下是对Java修饰符abstract,static,final的区别进行了详细的介绍,需要的朋友可以过来参考下
    2013-09-09
  • Java开启线程的四种方法案例详解

    Java开启线程的四种方法案例详解

    这篇文章主要介绍了Java开启线程的四种方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • SpringBoot中MVC的自动配置详解

    SpringBoot中MVC的自动配置详解

    这篇文章主要介绍了SpringBoot中MVC的自动配置详解,在实际开发过程中,还有一些老的系统在使用xml格式来传输数据,SpringBoot也提供了xml格式数据的返回,只需要小小的改动,就可以实现,需要的朋友可以参考下
    2023-09-09
  • SpringBoot 集成 Nebula的操作过程

    SpringBoot 集成 Nebula的操作过程

    这篇文章主要介绍了SpringBoot 集成 Nebula的操作过程,通过示例代码介绍了java 环境下如何对 Nebula Graph 进行操作,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • MyBatis 的 XML 配置文件和缓存使用步骤

    MyBatis 的 XML 配置文件和缓存使用步骤

    MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,这篇文章主要介绍了MyBatis的XML配置文件和缓存,需要的朋友可以参考下
    2022-01-01

最新评论