SpringMVC转发和重定向区别!

在servlet中,转发和重定向是由request和response完成的。两者之间的区别请看我之前的文章。那么在springMVC中是如何完成的呢?

/转发/

@RequestMapping(“/login.do”)

public String login(HttpServletRequest request,HttpServletResponse response){

request.setAttribute(“message”, “hello”);

return “forward:/index.do”; //forward在跳转后可以取到message值

index.do为另外一个path,也就是RequestMapping中的值。

@RequestMapping(“/index.do”)

public String index(HttpServletRequest request,HttpServletResponse response){

return “welcome”;

/重定向/

@RequestMapping(“/logout.do”)

public String logout(HttpServletRequest request,HttpServletResponse response){

request.setAttribute(“message”, “hello”);

return “redirect:/register.do”; //redirect在跳转后无法取到message值

register.do为另外一个path,也就是RequestMapping中的值。

@RequestMapping(“/register.do”)

return “register”;

另外forward跳转后地址栏URL不会改变 而redirect会改变

当我们使用重定向时,在后台传到页面的参数全部丢失,除非放在session中。所以在springMVC有一种解决方式如下:

@RequestMapping(“/update.do”)

public String update( RedirectAttributes redirectAttributes) {

redirectAttributes.addFlashAttribute(“message”, “操作成功”);

return “redirect:/admin/user”;

在重定向的页面中,可以获取到message的值,这是由于spring将message放入session中了。

Original: https://www.cnblogs.com/machine-matrix/p/7010589.html
Author: liandyao
Title: SpringMVC转发和重定向区别!

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592294/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 日常踩坑_jar包读取不到资源文件

    背景提要 之前不是为了导出word使用了一个WordUtil工具类嘛,这个工具类中需要一个资源文件css,然后就将该资源文件放在了WordUtil同包下的resources文件夹下…

    Java 2023年6月7日
    0106
  • JDK成长记19:ReenranctLock(2)加锁入队的AQS底层原理

    上一节,你应该学到了ReentrantLock底层基于AQS的3个小组件 state、owner、queue。并且了解了下一个线程1进行加锁修改owner和state的过程。还记得…

    Java 2023年6月5日
    0102
  • Java多线程下载分析

    为什么要多线程下载 俗话说要以终为始,那么我们首先要明确多线程下载的目标是什么,不外乎是为了更快的下载文件。那么问题来了,多线程下载文件相比于单线程是不是更快? 对于这个问题可以看…

    Java 2023年6月8日
    082
  • 玩转SpringBoot之定时任务@Scheduled线程池配置

    序言 对于定时任务,在SpringBoot中只需要使用@Scheduled 这个注解就能够满足需求,它的出现也给我们带了很大的方便,我们只要加上该注解,并且根据需求设置好就可以使用…

    Java 2023年5月30日
    0146
  • 为Eclipse创建Ant的build.xml文件编辑自动提示

    JavaEE版的Eclipse自动集成了Ant插件,但是,并没有提供Ant的DTD文件。原因在Apache官网的Ant项目下的FAQ中有解释,原文如下: **Is there a …

    Java 2023年6月8日
    058
  • 咕泡学院高级架构师全套课程

    百度网盘分享链接: https://pan.baidu.com/s/1yFtiPsIcDGFyELJHl4wjQg视频也是从网上找了好久才找的的。我看了一部分,感觉不同,同事也说高…

    Java 2023年6月6日
    0100
  • 使用nginx实现用在同域名下部署多个前后端分离项目

    背景 现在我们有几个前后端分离的项目,前后台使用的分别是Vue和Springboot框架开发,部署方式的话前端使用webpack进行打包用nginx作为静态服务器访问,部署在前端服…

    Java 2023年5月30日
    087
  • 【译】Spring的@EnableCaching注解

    Spring的@EnableCaching注解 @EnableCaching注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解…

    Java 2023年5月29日
    0155
  • 利用Abot 抓取博客园新闻数据

    1. 引言 相比于Java而言,基于C#的开源爬虫就少了很多。入行这么多年也从未接触过爬虫。出于兴趣今天给大家介绍一个C# 的爬虫工具Abot. 需要使用可以通过Nuget获取。A…

    Java 2023年6月5日
    0101
  • Java的jstack命令使用详解

    jstack命令简介 jstack(Java Virtual Machine Stack Trace)是JDK提供的一个可以生成Java虚拟机当前时刻的线程快照信息的命令行工具。线…

    Java 2023年6月7日
    089
  • SpringBoot使用自定义注解+AOP+Redis实现接口限流

    为什么要限流 系统在设计的时候,我们会有一个系统的预估容量,长时间超过系统能承受的TPS/QPS阈值,系统有可能会被压垮,最终导致整个服务不可用。为了避免这种情况,我们就需要对接口…

    Java 2023年6月16日
    077
  • netty 的线程模型

    boss group 和 worker group boss group 中,一个线程,一个 selector,监听一个端口 worker group 中,一个线程,一个 sele…

    Java 2023年5月30日
    093
  • java: javamail 1.6.2 Create Receive Email using jdk 19

    尝试获取编码(pop3message.getEncoding()),则会获得此contentType(UTF-8一个) https://javaee.github.io/javam…

    Java 2023年5月29日
    093
  • Redis 安装与使用

    Redis 介绍 Redis 是由 Salvatore Sanfilippo 写的 key-value 存储系统,是一个跨平台的非关系型数据库(NoSQL)。 Redis 是用C语…

    Java 2023年6月16日
    081
  • 2>&1到底是什么意思?

    java -jar snapshot.jar > snapshot.log 2>&1 & 写Java的朋友一定对上面的命令很熟悉,相信大部分人都知道 &…

    Java 2023年6月7日
    083
  • JS对后端响应的long类型数据处理精度丢失问题

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    073
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球