【SpringMVC】Servlet转发和重定向的区别
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转发和重定向的区别相关推荐
- Servlet转发和重定向的区别
文章目录 前言 一.转发和重定向是什么? 二.两者者的区别 1.转发 2.重定向 总结 前言 主要是探究servlet跳转也面的两个方式转发和重定向的区别 一.转发和重定向是什么? 当我们在登录页面的 ...
- java零到一:Servlet和JSP-7:转发、重定向的区别 和状态管理
1.转发和重定向的区别 请求对象和响应对象的作用域:请求对象到响应对象完成; (1)转发所涉及的组件可以共享request,response 对象,而重定向不可以 ...
- 转发和重定向的区别?
实际发生位置不同,地址栏不同 转发是发生在服务器的 转发是由服务器进行跳转的,细心的朋友会发现,在转发的时候,浏览器的地址栏是没有发生变化的,在我访问Servlet111的时候,即使跳转到了Servl ...
- 请求转发与重定向的区别和执行流程
请求转发与重定向的区别和执行流程 文章目录 请求转发与重定向的区别和执行流程 1 请求转发与重定向区别 2 现实生活的例子 2.1 重定向 2.2 请求转发 3 重定向-流程图.代码.结果 3.1 流 ...
- 转发与重定向的区别,特点
为什么80%的码农都做不了架构师?>>> 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求, 而浏览器将不会 ...
- java 根据客户端重定向_Java Web笔记 - 转发与重定向的区别与在FireBug客户端的表现...
1.转发: RequestDispatcher的forward(request, response)称为请求转发. request的getRequestDispatcher和getRequestDis ...
- 转发和重定向的区别[来源于网络]
转发和重定向的区别 不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题. 重定向:以前的request中存放的变量全部失效,并进入一个 ...
- Servlet转发和重定向的异同
请求转发和重定向的区别 请求转发是服务器内部行为,只能在服务器内部转发,而重定向可以是服务器外部行为,重定向不仅可以访问服务器内部资源,还可以访问服务器外部资源. 客户端请求次数不一样,请求转发客户端 ...
- 请求转发和重定向的区别以及什么时候使用
请求转发和重定向的区别以及什么时候使用 转发过程(不改变网址) 客户浏览器发送http请求-->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作-->将 ...
最新文章
- Hello Jsilk
- c语言的标准字符,C语言标准定义的32个关键字
- python字符串的特点_python小白之路(特性语法三之字符串)
- qt客户端连接服务器不响应,qt判断tcp客户端是否连接服务器
- EtherCAT1.5.2官方文档翻译-第七章
- 2.mysql数据库如何安装_MySQL数据库如何安装
- SpringCloud工作笔记069---The Hystrix timeout of 60000ms for the command sc-auth is set lower than the
- 一个农民矿工的悲情遗书
- 数据结构——>二叉树
- java玫瑰花代码_程序员最美的情人节玫瑰花,JAVA代码实现的3D玫瑰噢
- linux 蓝牙管理软件,Blueman - Ubuntu的蓝牙管理器
- NekoHTML学习笔记
- 网络工程师--网络规划和设计案例分析(1)
- 工厂软件支持及测试是什么,工厂测试指南.pdf
- 虚拟机下Ubuntu打开摄像头是黑屏问题
- 学术论文写作方法和技巧
- Reac16+Monaco打造代码编辑器(前端部分)
- MySQL按照字符排序,英文,中文,数字综合排序
- 2016清华计算机学院复试名单,2016清华复试名单自动化名单
- python 语法错误 和异常_Python基础知识:新手学Python时常见的语法错误和异常