请求 转发(forword)和重定向(redirect)
请求 转发forword和重定向redirect
- 两者含义
- 两者区别
- 总结
两者含义
forword转发:
服务器请求资源,直接访问目标地址的url,把那个url响应内容读取过来,然后把这些内容发给浏览器。所有的跳转在服务器实现,浏览器不知道服务器发送的内容从哪里来,客户端根本不知道跳转的这个动作,所以它的地址栏不变还是原来的地址栏。——转发,是服务器的行为。
工作流程:
客户浏览器发送http请求----》web服务器接受此请求–》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户。
在这里,转发的路径必须是同一个web容器下的url
,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
redirect重定向:
服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏会发生改变,显示的是新的url。——重定向,是客户端的行为。
工作流程:
客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器–》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。
在这里 location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
两者区别
转发forword | 重定向redirect | |
---|---|---|
地址栏 | 不变 | 改变 |
数据共享 | 可以共享request里面的数据 | 不能共享 |
运行场景 | 用户登录 角色不同跳转页面不同 | 注销时 返回主页面or跳转其他网站 |
效率 | 高 | 低 |
总结
1、
请求转发 只能将请求转发给同一个WEB应用中的组件,
重定向 还可以重新定向到同一站点不同应用程序中的资源,甚至可以定向到一绝对的URL。
2、
重定向 可以看见目标页面的URL,
转发 只能看见第一次访问的页面URL,以后的工作都是有服务器来做的。
3、
请求转发 响应调用者和被调用者之间共享相同的request对象和response对象
重定向 调用者和被调用者属于两个独立访问请求和响应过程。
4、
重定向 跳转后必须加上return,要不然页面虽然跳转了,
但是还会执行跳转后面的语句,
转发 是执行了跳转页面,下面的代码就不会在执行了
参考资料:https://www.cnblogs.com/haozihao/p/15388899.html
请求 转发(forword)和重定向(redirect)相关推荐
- servlet中请求转发forword与重定向redirect区别
1.请求转发(RequestDispatcher)的过程: 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getReques ...
- 转发forword和重定向redirect
转发forword 转发是浏览器发送http请求给服务器,服务器接受请求,在内部调用方法在完成请求处理和转发动作将目标资源发送给浏览器,整个过程浏览器对服务器的请求只有一次,该请求也可以转发n次,都是 ...
- java中forward和redirect_java中转发forward和重定向redirect的区别
Forward(转发) 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是 ...
- httpservletresponse 重定向浏览器不变的原因_JavaWeb——Servlet——请求转发与响应重定向...
导语:在实际的软件开发过程中,往往需要多个Servlet来实现不同的功能,就需要对多个Servlet进行组合调用.多个Servlet之间如何进行通信和跳转?而这就需要用到请求转发与响应重定向技术. 原 ...
- 请求转发跟响应重定向的具体应用
1.请求转发与响应重定向的概念 ·转发 是服务器端的行为 发送了一次请求 网址不会发生变化 请求的数据不会丢失 一般情况下在进行查询操作时使用转发 方法:request.getRequestDispa ...
- Java重定向sendRedirect与请求转发forword的区别
请求重定向与请求转发的比较,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但 ...
- Servlet之请求转发和响应重定向
多个servlet之间的跳转有两种方式: 请求转发:request.getRequestDispatcher("转发路径").forward(request, response); ...
- 请求转发Forword
请求转发 RequestDispatcher rd = request.getRequestDispatcher("/MyServlet"); 说明:使用request获取Requ ...
- 解决servlet请求转发、响应重定向无法实现页面跳转问题
问题:login.html能正常运行,但当用户名和密码正确后,点击登录按钮,通过html页面的action属性值和servlet页面的urlPatterns属性值,实现servlet请求转发,无法实现 ...
最新文章
- 猫哥教你写爬虫 006--条件判断和条件嵌套
- Pycharm 2018 虚拟环境创建及解释器的设置(小白图解教程)
- 八月22日,django知识点总结:
- 【渝粤题库】陕西师范大学200271 微分几何 作业(专升本)
- python判断端口是否开放_Python扫描IP段查看指定端口是否开放的方法
- 图文详解什么是OAuth2
- textarea选中行删除_Easy Data Transform如何在Excel中删除重复的行?
- matlab生成不重复的随机数_怎么生成不重复随机数——《超级处理器》应用
- oracle数据表丢失数据库,Oracle数据库数据丢失恢复的几种方法总结
- 深入了解absolute
- VS 2019 打包安装应用
- iPhone 屏幕尺寸
- php guzzle的基本使用
- 第3章 远程连接管理Linux实践
- 【Python爬虫案例】批量采集网站壁纸,实现自动更换桌面壁纸
- 优先调度规则(PDR)
- 【学习笔记】到底是谁先开枪?——网络游戏同步机制初探
- git——04 远程仓库/标签/别名
- 8个灯以此点亮c语言程序,单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)...
- 腾讯信鸽推送Android SDK快速指南