详解请求转发和重定向
**
详解请求转发和重定向
**servlet请求转发与重定向的区别:
request.setAttribute(“test”,”hello”);
request.getRequestDispacther(“/test.jsp”).forword(request,response);
response.sendRedirect(“test.jsp”);
一、显示结果:
1、当用request.getRequestDispacther(“/test.jsp”).forword(request,response); 请求转发后,结果页面输出:hello
2、当用response.sendRedirect(“test.jsp”);重定向后,结果页面输出:null
二、底层分析:
1、请求转发(RequestDispatcher)的过程:
请求转发:
客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。
2、重定向(sendRedirect)的工作原理:
重定向:
客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问test.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。
类似以下例子:
转发:
张三(客户端) -> 【 服务窗口 A (服务端 ) -> 服务窗口B 】
重定向:
张三(客户端) -> 服务窗口 A (服务端 ) ->去找B
张三(客户端) -> 服务窗口 B (服务端 ) ->结束
三、表面分析:
1、当用RequestDispatcher请求转发后,地址栏为http://localhost:8080/test/TestServlet
这真好应正了上面的分析,我们起初请求的就一个servlet,至于你服务器端怎么转,流程怎么样的,我客户端根本就不知道,我发了请求后我就等
着响应,那你服务器那边愿意怎么转就怎么转,我客户端不关心也没法知道,所以当服务器端转发到jsp后,它把结果返回给客户端,客户端根本就
不知道你这个结果是我真正访问的servlet产生的,还是由servlet转发后下一个组件产生的。
2、当用sendRedirect重定向后,地址栏为http://localhost:8080/test/test.jsp
因为这个时候,客户端已经知道了他第二次请求的是test.jsp,服务器已经告诉客户端要去访问test.jsp了,所以地址栏里会显示想要访问的结果。
参考链接:https://blog.csdn.net/u013738122/article/details/82557586
详解请求转发和重定向相关推荐
- 【JavaWeb】一文Servlet全解:继承关系、生命周期、容器和请求转发与重定向等
文章目录 一.Servlet 概述 二.Servlet HelloWorld 三.Servlet 继承关系 四.Servlet 生命周期 五.ServletConfig 和 ServletContex ...
- jsp:请求转发和重定向
HttpServletResponse对象的sendRedirect(String location)方法称作重定向, 如果location地址前面加上"/",则表示相对于Serv ...
- 浅析请求转发和重定向
浅析请求转发和重定向 1.请求转发 request.getRequestDispather("/indexServlet").forword(request,response); ...
- 【相对/绝对路径】JavaWeb项目中,请求转发与重定向的路径写法
相对路径.全路径 是要不以/开头,都是相对路径.相对路径是从当前资源出发,去寻找其他资源. 只要路径中以/开肉,就是全路径.全路径是从项目根目录出发,去寻找其他资源. 在开发中,写文件路径时,最好使用 ...
- 【Servlet】请求转发、重定向、Cookie使用之三天自动登陆
三天自动登陆项目源码:GitHub地址-LoginSystem JDBC 手写SORM框架 手写Servlet 开发环境:Eclipse 一.请求乱码问题解决 // 设置请求.响应编码格式req.se ...
- 【JavaWeb】Response请求转发与重定向辨析
请求转发与重定向对比 辨析 请求转发只有一次请求.一次响应,是在服务端内部跳转 重定向有两次请求.两次响应:将结果返回给客户端,让客户端重新发起一次跳转 请求转发的登陆界面实现 login.jsp & ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...
原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...
- 请求转发与重定向的区别和执行流程
请求转发与重定向的区别和执行流程 文章目录 请求转发与重定向的区别和执行流程 1 请求转发与重定向区别 2 现实生活的例子 2.1 重定向 2.2 请求转发 3 重定向-流程图.代码.结果 3.1 流 ...
- 【Servlet】请求转发与重定向
重定向 重定向是指由原请求地址重新定位到某个新地址,原有的request请求失效,客户端看到的是新的request请求返回的响应结果,客户端浏览器地址栏变为新请求地址. 一次重定向过程存在两次请求和两 ...
最新文章
- Nature: 拟南芥微生物组功能研究1培养组学—高通量细菌分离培养鉴定
- MariaDB 主从复制的配置
- asp.net oracle参数传递,asp.net – Oracle参数问题中的链接数据库
- pytorch torch.normal
- 亚马逊全面发力AI,推机器学习托管服务、四项新工具,还有AI硬件
- Android线程,线程池使用及原理博文参考
- 时光 php,ctphp-php教程-时光划过那刹那-PHP教程--创业的风,吹向了年轻之长藤个人博客网站...
- [Docker] 03 AUFS
- Spring Boot Actuator监控端点小结
- python自动生成sql建表语句
- 联想服务器一直在初始化系统,为什么联想“一键恢复”一直在初始化
- 对未来国产操作系统的期望
- depot_tools下载
- Oracle同一字段有数字和字母时进行排序
- 如何了解舆情传播的平台及路径?
- 终止被占用的端口,localhost:8000
- Photoshop touch教程全攻略
- dash 机器人 Android,用于 Dash 和 Dot 机器人的Blockly
- 李翰卿治疗小儿五更咳嗽经验
- Redis万字笔记 深入浅出redis
热门文章
- xmind报错java.lang.OutOfMemoryError
- Yii2 定制表单输入字段的标签和样式
- SQL Server 数据库管理员(DBA)的工作内容
- 跨境电亚马逊测评是骗人的吗?亚马逊测评这个行业靠谱吗?
- 嘘!我有特殊的绕线画技巧,教你用MATLAB绘制另一种绕线画
- linux操作系统论文可复制,linux操作系统课程论文
- 系统流畅度测试软件,三大系统运行速度对比测试
- Windows 搭建银河麒麟 ARM虚拟机
- USTC软件学院《高级软件工程》学习总结
- 戴尔笔记本如何查看HTML代码,戴尔笔记本win7系统如何查看电脑型号