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

总结

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

相关文章

  • SpringSecurity+Redis+Jwt实现用户认证授权

    SpringSecurity+Redis+Jwt实现用户认证授权

    SpringSecurity是一个强大且灵活的身份验证和访问控制框架,本文主要介绍了SpringSecurity+Redis+Jwt实现用户认证授权,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • java身份证合法性校验并提取身份证有效信息

    java身份证合法性校验并提取身份证有效信息

    这篇文章主要为大家详细介绍了java身份证合法性校验,并获取并根据身份证号提取身份证相关信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • PowerJob的IdGenerateService工作流程源码解读

    PowerJob的IdGenerateService工作流程源码解读

    这篇文章主要为大家介绍了PowerJob的IdGenerateService工作流程源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • springboot整合xxl-job实现分布式定时任务的过程

    springboot整合xxl-job实现分布式定时任务的过程

    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,这篇文章主要介绍了springboot整合xxl-job分布式定时任务,需要的朋友可以参考下
    2022-08-08
  • java中isEmpty和isBlank的区别小结

    java中isEmpty和isBlank的区别小结

    Java中的isEmpty和isBlank都是用来判断字符串是否为空的方法,但在不同的情况下有所区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • java实现文本框和文本区的输入输出

    java实现文本框和文本区的输入输出

    这篇文章主要介绍了java实现文本框和文本区的输入输出的方法和具体示例,有需要的小伙伴可以参考下。
    2015-06-06
  • java实战小技巧之字符串与容器互转详解

    java实战小技巧之字符串与容器互转详解

    Java.lang.String是Java的字符串类. Srting是一个不可变对象,下面这篇文章主要给大家介绍了关于java实战小技巧之字符串与容器互转的相关资料,需要的朋友可以参考下
    2021-08-08
  • Java应用程序开发学习之static关键字应用

    Java应用程序开发学习之static关键字应用

    今天小编就为大家分享一篇关于Java应用程序开发学习之static关键字应用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java格式化日期和时间三种方法

    Java格式化日期和时间三种方法

    这篇文章主要给大家介绍了关于Java格式化日期和时间三种方法的相关资料,最近遇到很多在Java里获取当前时间的问题,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • PostMan如何传参给@RequestBody(接受前端参数)

    PostMan如何传参给@RequestBody(接受前端参数)

    这篇文章主要介绍了PostMan如何传参给@RequestBody(接受前端参数),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论