1. 概述

转发和重定向是Servlet中进行页面跳转的两种方式,下图展示了其工作原理,左图为转发,右图为重定向。

从上图可以看出,二者最大的区别就是:转发是在服务器内部进行的,只有一次请求响应;而重定向是客户端的行为,有两次请求响应。

正是因为二者工作方式的差异,可以推出以下几点需要注意的地方:

  • 如果 Servlet1 在request域中共享数据,那么经过转发之后,Servlet2 也是可以获取该数据的。如果使用重定向则会报错,因为两个 Servlet 已经不在一个请求域了。
  • 重定向后浏览器的地址栏会变化,转发地址栏不会变。
  • 重定向可以跳转到任意的URL,转发只能在本站的资源跳转。

2. SpringMVC中使用转发和重定向

2.1 转发视图

SpringMVC中默认的转发视图是InternalResourceView

SpringMVC中创建转发视图的情况:

当控制器方法中所设置的视图名称以"forward:"为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"forward:"去掉,剩余部分作为最终路径通过转发的方式实现跳转

@RequestMapping("/testForward")
public String testForward(){return "forward:/testHello";
}

2.2 重定向视图

SpringMVC中默认的重定向视图是RedirectView

当控制器方法中所设置的视图名称以"redirect:"为前缀时,创建RedirectView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"redirect:"去掉,剩余部分作为最终路径通过重定向的方式实现跳转

@RequestMapping("/testRedirect")
public String testRedirect(){return "redirect:/testHello";
}

2.3 Thymeleaf

在 SpringMVC 中我们通常使用 Thymeleaf 作为视图渲染技术,在配置文件中配置 Thymeleaf 的视图解析器之后,控制器的方法直接返回视图的名称即可,视图解析器会自动加上前缀后缀然后转发,非常方便。注意, Thymeleaf 默认使用的是转发方式实现跳转。

@RequestMapping("/testHello")
public String testHello() {return "hello";

Thymeleaf 的视图解析器会加上前缀"/“和后缀”.html",然后跳转到hello.html。

【SpringMVC】Servlet转发和重定向的区别相关推荐

  1. Servlet转发和重定向的区别

    文章目录 前言 一.转发和重定向是什么? 二.两者者的区别 1.转发 2.重定向 总结 前言 主要是探究servlet跳转也面的两个方式转发和重定向的区别 一.转发和重定向是什么? 当我们在登录页面的 ...

  2. java零到一:Servlet和JSP-7:转发、重定向的区别 和状态管理

    1.转发和重定向的区别 请求对象和响应对象的作用域:请求对象到响应对象完成;         (1)转发所涉及的组件可以共享request,response           对象,而重定向不可以 ...

  3. 转发和重定向的区别?

    实际发生位置不同,地址栏不同 转发是发生在服务器的 转发是由服务器进行跳转的,细心的朋友会发现,在转发的时候,浏览器的地址栏是没有发生变化的,在我访问Servlet111的时候,即使跳转到了Servl ...

  4. 请求转发与重定向的区别和执行流程

    请求转发与重定向的区别和执行流程 文章目录 请求转发与重定向的区别和执行流程 1 请求转发与重定向区别 2 现实生活的例子 2.1 重定向 2.2 请求转发 3 重定向-流程图.代码.结果 3.1 流 ...

  5. 转发与重定向的区别,特点

    为什么80%的码农都做不了架构师?>>>    重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求, 而浏览器将不会 ...

  6. java 根据客户端重定向_Java Web笔记 - 转发与重定向的区别与在FireBug客户端的表现...

    1.转发: RequestDispatcher的forward(request, response)称为请求转发. request的getRequestDispatcher和getRequestDis ...

  7. 转发和重定向的区别[来源于网络]

    转发和重定向的区别 不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题. 重定向:以前的request中存放的变量全部失效,并进入一个 ...

  8. Servlet转发和重定向的异同

    请求转发和重定向的区别 请求转发是服务器内部行为,只能在服务器内部转发,而重定向可以是服务器外部行为,重定向不仅可以访问服务器内部资源,还可以访问服务器外部资源. 客户端请求次数不一样,请求转发客户端 ...

  9. 请求转发和重定向的区别以及什么时候使用

    请求转发和重定向的区别以及什么时候使用 转发过程(不改变网址) 客户浏览器发送http请求-->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作-->将 ...

最新文章

  1. Hello Jsilk
  2. c语言的标准字符,C语言标准定义的32个关键字
  3. python字符串的特点_python小白之路(特性语法三之字符串)
  4. qt客户端连接服务器不响应,qt判断tcp客户端是否连接服务器
  5. EtherCAT1.5.2官方文档翻译-第七章
  6. 2.mysql数据库如何安装_MySQL数据库如何安装
  7. SpringCloud工作笔记069---The Hystrix timeout of 60000ms for the command sc-auth is set lower than the
  8. 一个农民矿工的悲情遗书
  9. 数据结构——>二叉树
  10. java玫瑰花代码_程序员最美的情人节玫瑰花,JAVA代码实现的3D玫瑰噢
  11. linux 蓝牙管理软件,Blueman - Ubuntu的蓝牙管理器
  12. NekoHTML学习笔记
  13. 网络工程师--网络规划和设计案例分析(1)
  14. 工厂软件支持及测试是什么,工厂测试指南.pdf
  15. 虚拟机下Ubuntu打开摄像头是黑屏问题
  16. 学术论文写作方法和技巧
  17. Reac16+Monaco打造代码编辑器(前端部分)
  18. MySQL按照字符排序,英文,中文,数字综合排序
  19. 2016清华计算机学院复试名单,2016清华复试名单自动化名单
  20. python 语法错误 和异常_Python基础知识:新手学Python时常见的语法错误和异常

热门文章

  1. 烈火武尊--ios技术支持
  2. 全屏或者退出全屏检测
  3. C#无法将顶级控件添加到控件
  4. java 论坛模块设计方案
  5. matlab中将scope图转换为figure图
  6. 苹果证书99美元_苹果打破2万亿美元壁垒创造华尔街历史
  7. 【JAVA进阶】JVM第二篇- JVM 垃圾回收详解
  8. 学计算机的人用的壁纸,桌面心理学:你的电脑桌面透露了什么?
  9. 逻辑运算与移位指令(重点)
  10. Windows服务器安全策略