httpservletresponse 重定向浏览器不变的原因_JavaWeb——Servlet——请求转发与响应重定向...
导语:在实际的软件开发过程中,往往需要多个Servlet来实现不同的功能,就需要对多个Servlet进行组合调用。多个Servlet之间如何进行通信和跳转?而这就需要用到请求转发与响应重定向技术。
原理
多个Servlet或者说JSP之间跳转有两种方式
注:JSP本质上就是Servlet
①:请求转发:
request.getRequestDispatcher(String).forward(request,response)
②:响应重定向
response.sendDirect(ContextPath)
这两种方式表象上的不同体现在访问地址栏中是否产生了变化:请求转发方式地址栏中的路径不会发生改变,响应重定向方式地址栏中的路径会发生改变。例如现在有ServletA,ServletB这两个Servlet要建立通信当我们在ServletA中采用请求转发的方式将业务转发给ServletB,这时访问ServletA,页面呈现的内容是ServletB中编写的业务,说明ServletA将业务转发给ServletB成功了,此时地址栏中的路径还是ServletA的虚拟目录,但如果采用响应重定向的方式将业务转发给ServletB这时访问ServletA,页面呈现的内容也还是ServletB中编写的,但是地址栏中的路径就变成了ServletB的虚拟目录。
出现这样的差别的原因在于:请求转发只会产生一次请求,它只是在服务器的内部将第一个Servlet的请求转发给了另一个Servlet去处理;响应重定向会产生两次请求,一个Servlet将请求第一次处理完了之后,由浏览器再发一个新的请求让另一个Servlet去处理。所以采用响应重定向时,地址栏会发生变化。
当使用request.setAttribute(String,Object)方法在ServletA中自定义属性时,通过请求转发的技术在ServletB中通过request.getAttribute(String)方法能够获取到对应的属性值,这是因为是同一个请求携带的数据,但是如果采用的是响应重定向技术,就获取不到属性值,这一点就证实了响应重定向技术其实是两次不同的请求,所以ServletB中获取不到ServletA中定义的属性值。
【案例1】
需求:体验请求转发技术
代码显示结果
关于路径的一点小提醒:采用请求转发技术时,如果是两个Servlet之间的转发ServletA将业务转给ServletB这时在request.getRequestDispatcher(String path)括号中的路径就为"/转发目的地的Servlet的虚拟目录",如上例中的“/JumpPage”。如果是转发到JSP页面括号中的路径就为"/文件名.jsp"。
【案例2】
需求:体验响应重定向技术
代码显示结果
httpservletresponse 重定向浏览器不变的原因_JavaWeb——Servlet——请求转发与响应重定向...相关推荐
- 解决servlet请求转发、响应重定向无法实现页面跳转问题
问题:login.html能正常运行,但当用户名和密码正确后,点击登录按钮,通过html页面的action属性值和servlet页面的urlPatterns属性值,实现servlet请求转发,无法实现 ...
- 请求转发跟响应重定向的具体应用
1.请求转发与响应重定向的概念 ·转发 是服务器端的行为 发送了一次请求 网址不会发生变化 请求的数据不会丢失 一般情况下在进行查询操作时使用转发 方法:request.getRequestDispa ...
- Servlet之请求转发和响应重定向
多个servlet之间的跳转有两种方式: 请求转发:request.getRequestDispatcher("转发路径").forward(request, response); ...
- Servlet 请求转发(forword)与重定向(sendredirect)的区别
servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...
- 请求 转发(forword)和重定向(redirect)
请求 转发forword和重定向redirect 两者含义 两者区别 总结 两者含义 forword转发: 服务器请求资源,直接访问目标地址的url,把那个url响应内容读取过来,然后把这些内容发给浏 ...
- httpservletresponse 重定向浏览器不变的原因_正确区分火狐浏览器(Firefox)中国版和国际版amp;下载方法...
近日由于某些个人原因, 不得不从谷歌浏览器迁移到火狐浏览器, 不想再次遭遇国际版中国版之分的困扰; 研究途中, 发现一些有趣的点, 特此总结分享. 最重要的, 不必把任何软件的中国特供版都视为洪水猛兽 ...
- servlet中请求转发forword与重定向redirect区别
1.请求转发(RequestDispatcher)的过程: 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getReques ...
- servlet请求转发
来源:http://www.2cto.com/kf/201610/554591.html 请求转发:Servlet(源组件)先对客户请求做一些预处理操作(数据处理),然后把请求转发给其他Web组件(目 ...
- Servlet请求转发中文乱码解决
2019独角兽企业重金招聘Python工程师标准>>> 在Servlet的使用过程中,如果在请求转发的同时需要获得输出流并且写出数据的时候,需要设定resp 的编码格式,否则的话,跳 ...
最新文章
- 相机模型--A Theory of Catadioptric Image Formation
- 为何python不好找工作k-为何python不好找工作,seo行业不好转行了
- 在Spring启动时与mongodb一起摇摆
- 每日一测4(装箱与拆箱)
- c语言简单编程题模板,C语言编程题,比较简单
- js中普通函数与函数对象
- 【微软2014实习生及秋令营技术类职位在线測试】题目1 : String reorder
- 【邱锡鹏老师SMP2020教程】90页自然语言处理中的预训练模型
- VBS中实现99乘法表的输出
- 神经计算棒是什么_这是太棒了
- 常见信息流广告有哪些展现形式
- linux下xz文件如何解压,tar.xz文件如何解压
- excel单元格内换行的方法
- php降序怎写,PHP数组如何按键名实现降序排列
- 身为一个SEO/SEM/运营专员,一天的工作是怎样的?
- 集束搜索算法 beam search
- 移动开发技术——近场通信
- 《时间从来不语,却回答了所有问题》读后感
- oracle创建用户赋予访问某一视图的权限
- 最新网站证书提示风险的原因和几个解决方法
热门文章
- pandas 批量修改列名_十分钟想搞定pandas?
- simulink 28335 代码_simulink建立自己的模块库
- python单词的含义-Python这个单词是什么含义??????????????
- 30岁学python有前途吗-为什么做大数据一定要学Python?
- python从入门到放弃 图-python从入门到放弃(二)
- 语音识别技术准确率早已超过人类平均水平
- 语音识别模型_语音 识别_语音识别 - 云+社区 - 腾讯云
- 一种语音识别的自动控制系统及方法与流程
- python的最大优势之一是有理数吗_Python里的有理数类(精度高,可计算)
- 【链表】链表中倒数最后k个节点