文档章节

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

博为峰教研组
 博为峰教研组
发布于 2017/02/16 19:13
字数 620
阅读 4
收藏 0
点赞 0
评论 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
黄浦
程序员
Servlet的一些细节--学习笔记

Servlet细节 1)浏览器访问的url-pattern只是一个符合格式的任意字符串,以/开头 2)一个Servlet的url-pattern可以是1个或多个,有二种形式; a).xx b)/xx/ 注意:/不能一起直接使用 3)/和....

知止内明 ⋅ 04/17 ⋅ 0

JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明 ⋅ 04/18 ⋅ 0

servlet跳转页面的两种方式

sendRedirect和forward 都不会改变session的值和状态; 都可以在URL后面传递参数; request是客户端的对象,response是服务端的对象, response在跳转的时候,必须遵循浏览器地址规范; send...

Ethel_oo ⋅ 04/23 ⋅ 0

Java Web(一) Servlet详解!!

一、什么是servlet?     处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且...

architect刘源源 ⋅ 05/08 ⋅ 0

偶尔有跳转失败的情况,异常如下

[10:37:51:719] [ERROR] - - /refund/refundDetail?mallReturnId=91 java.lang.RuntimeException: File not found : /opt/jboot/webRoot/refund/refundDetail.html at com.jfinal.template.s......

保持-微笑 ⋅ 04/17 ⋅ 0

【J2EE】之常用的接口和协议

前言 初接触J2EE,会遇到很多之前没有遇到过的术语,下面我们来简单地汇总一下这些接口和协议吧。 各大接口和协议详解 JDBC 1.定义:Java数据库连接 2.地位:用于Java应用程序连接数据库的标...

m18633778874 ⋅ 04/26 ⋅ 0

Servlet创建运行的过程--生命周期以及自动加载

前言 初学者像我这样的,刚开始学的时候一脸懵逼,为什么Servlet可以直接运行,明明没有入口啊 只是重写了Servlet中的方法。然后访问该地址怎么就直接运行了。 所以了解Serlvet的运行过程即生...

codingcoge ⋅ 06/12 ⋅ 0

JavaWeb22-HTML篇笔记

第22章WEB22-网上商城实战篇 今日任务 Ø 完成后台的功能模块 1.1 网上商城的后台功能的实现:1.1.1 后台的功能的需求: 1.1.1.1 分类管理: 【查询所有分类】 在左侧菜单页面中点击分类管理: 提...

我是小谷粒 ⋅ 06/08 ⋅ 0

web服务器,应用程序服务器,http服务器的区别

WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器? 这个概念很重要。 Web服务器的基本功能就是提供Web信息浏览服务。它只需支持...

水墨如丹青 ⋅ 04/13 ⋅ 0

Apache Qpid JMS AMQP 0-x 6.3.1 发布

Apache Qpid JMS AMQP 0-x 6.3.1 已发布。Qpid JMS AMQP 0-x 是兼容 JMS 1.1 的客户端,等同于 AMQP 0-8,0-9,0-9-1 和 0-10。Qpid JMS 是一个使用 Qpid Proton 协议引擎的 Java Message Ser......

淡漠悠然 ⋅ 05/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

1.01-StringUtils的使用

import org.apache.commons.lang.StringUtils; 一、StringUtils 常用的方法: 1. 判断某一字符串是否为空 , 为空的标准是 str==null 或 str.length()==0 StringUtils.isEmpty(null) ==>tr......

静以修身2025 ⋅ 30分钟前 ⋅ 0

几道Spring 面试题

1、BeanFactory 接口和 ApplicationContext 接口有什么区别? ApplicationContext 接口继承BeanFactory接口 Spring核心工厂是BeanFactory BeanFactory采取延迟加载,第一次getBean时才会初始...

职业搬砖20年 ⋅ 31分钟前 ⋅ 0

包饺子

http://storage.slide.news.sina.com.cn/slidenews/77_ori/2018_24/74766_826131_625489.gif

霜叶情 ⋅ 33分钟前 ⋅ 0

兑吧:从自建HBase迁移到阿里云HBase实战经验

摘要: 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务。推啊网络是一家互动式广告平台,经过多...

猫耳m ⋅ 43分钟前 ⋅ 0

xml解析

方法一: String s_xml1 = "<xml>" + "<head>lalalalal</head>" + "<body>1234</body>" + "</xml>"; try { DocumentBuilderFactory documentBuilderFactory......

GithubXD ⋅ 45分钟前 ⋅ 0

reuse stream

Although Java streams were designed to be operated only once, programmers still ask how to reuse a stream. From a simple web search, we can find many posts with this same issue ......

idoz ⋅ 45分钟前 ⋅ 0

兑吧:从自建HBase迁移到阿里云HBase实战经验

摘要: 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务。推啊网络是一家互动式广告平台,经过多...

阿里云云栖社区 ⋅ 47分钟前 ⋅ 0

从世界杯看国内运动体育社交新能量

2018年世界杯已正式拉开帷幕,一场全世界球迷的狂欢也正式开始。 世界杯影响力:30亿+球迷的狂欢+社交话题 世界杯这个超级IP和对社交网络的引爆让更多的人目光聚焦到国内运动体育社交这个层...

ThinkSNS账号 ⋅ 47分钟前 ⋅ 0

不固定值替换

<?php$arr = 20;$data = str_replace(array(10,20,30,40),array("blue","red","green","yellow"),$arr);print_r($data);...

nsns ⋅ 49分钟前 ⋅ 0

Job for nginx.service failed 错误解决方案

今天刚在centos7上安装了nginx-1.2.11,/etc/init.d/nginx start启动时,出现 Job for nginx.service failed because the control process exited with error code. See "systemctl status n......

河图再现 ⋅ 50分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部