文档章节

跟小博老师一起学Servlet ——Servlet之客户端跳转

博为峰教研组
 博为峰教研组
发布于 2017/02/16 19:13
字数 620
阅读 4
收藏 0

上节中我们通过HttpServletRespose向其客户端响应,但有些场景我们要将请求转发到下一资源或其它页面,那就要借助于跳转技术。

概念

所谓跳转给我们最直观的感受请求与响答并不一致,比喻我们访问A的网址而出来的却是B网址的内容。很多Web程序出于业务需要,常常使用到跳转技术。Servlet中可以实现Servlet与Servlet、Servlet与jsp等之间的跳转,而且实现起来并不复杂。

 

跳转方式

Servlet提供了二种跳转方式,一种为客户端跳转(又称为重定向),另一种为服务端跳转。客户端跳转从字面理解需借助客户端(一般为浏览器)完成,服务端跳转则在Web服务器内部完成,二者有质的区别。

 

客户端跳转原理

比如我们从A页面上向某个Servlet发起请求,servlet处理完成后返回B页面。

请看客户跳转流程图

 

可以看到浏览器向Web服务器请求了二次,最终显示的是页面B内容。第一次请求处理完成后,Servlet向浏览器做出响应。在响应的内容中包含了指示浏览器发起第二次请求的指令,浏览器收到响应后再次向指定URL发送请求。此过程有点像对战游戏中的迂回策略,巧妙化简不能直到达目地的问题:)

客户端跳转过程稍显复杂,同学们可以观察浏览器地址栏中最终的URL就好区分是哪种跳转。客户端跳转最终是目标资源URL,也就是页面B资源地址;服务端跳显示的还是servlet对应的地址。

 

实现代码

HttpServletResponse提供了sendRedirect方法专用于客户端跳转,注意的是提供其跳转的URL最好是全路径,否则对于不是同一站点的资源会跳转失败。

 

应用场景

客户端跳的目标可以是同一站点下的资源,但更适合跨域跳转(比如从百度跳到搜狐)。对于以禁用了cookie的浏览器,采用客户端跳会丢失会话(session)。应用时要确认运行环境,或通过重写URL解决,以免造成bug。

© 著作权归作者所有

共有 人打赏支持
博为峰教研组
粉丝 49
博文 1224
码字总数 479077
作品 0
黄浦
程序员
JSP复习笔记——第11章 JSP 构架和MVC设计模式

11.1 JSP Model I 体系结构 11.2 JSP Model II 体系结构/MVC设计模式 11.3 使用MVC设计模式改写用户注册程序 11.3.1 使用serlvet实现Controller层 11.3.2 使用jsp实现表示层 11.3.3 使用Jav...

暗之幻影
2014/12/18
0
0
J2EE规范系列之 JMS1.1 (一) 基本概念

什么是JMS JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。它是J2EE规范的一部分,定义的接口标准,针对不同的厂商有不同的实现库。...

Garrry
2015/07/06
0
0
图解 & 深入浅出 JavaWeb:Servlet必会必知

Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter :BYSocket “眨眼间,离上一篇写技术博文时隔1个月。怕自己真的生疏了,都是备案太慢惹...

泥沙砖瓦浆木匠
2015/08/21
0
50
图解 & 深入浅出 JavaWeb:Servlet必会必知

Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter :BYSocket “眨眼间,离上一篇写技术博文时隔1个月。怕自己真的生疏了,都是备案太慢惹...

KeepMoving
2015/08/25
0
0
图解 & 深入浅出 JavaWeb:Servlet 再说几句

Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter :BYSocket 上一篇的《 Servlet必会必知 》受到大家一致好评 — (感谢 读者 及 OSC 推荐...

泥沙砖瓦浆木匠
2015/09/03
0
13

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6 取整除法

python3.6 中取整除法运算逻辑如下: d 非零,那么商 q 满足这样的关系: a = qd + r ,且0 ≤ r n1=7//3#7 = 3*2 +1n2=-6.1//3#-7 = 3*(-3)+2'{},{}'.format(n1,n2) 从运行结果可以...

colinux
32分钟前
3
0
阶段总结——用虚拟机搭建一个高可用负载均衡集群架构

[toc] linux基本知识已经介绍完,现有一个业务需要操作,通过对这个项目的操作,可以复习、总结、巩固之前的知识点; ** 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,...

feng-01
35分钟前
0
0
mysql 设置utf8字符集 (CentOS)

1.查看数据库及mysql应用目前使用的编码方式 (1)链接mysql 客户端 (2)执行:status 结果: 2.修改mysql 应用的字符编码(server characterset ) (1)打开配置文件:vim /etc/mysql/my...

qimh
36分钟前
0
0
windows无法格式化u盘解决方法

1。点开始-运行-输入cmd-format f: /fs: fat32 (这里f:是指U盘所在盘符) 这个格式化会很慢 请耐心等待

大灰狼wow
47分钟前
0
0
MySql 8.0连接失败

原来,MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_s...

放飞E梦想O
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部