1 请求跳转及转发 1.1 举例 : 页面流转 可以在首页选择自己喜欢的颜色, 进入对应的页面 选择绿色, 会进入绿色界面 : 选择红色, 会进入红色界面 :

Similar documents
1.1 Filter 的特性 请求映射 filter-mapping 和 servlet-mapping 都是将对应的 filter 或 servlet 映射到某 个 url-pattern 上, 当客户发起某一请求时, 服务器先将此请求与 web.xml 中定 义的所有 url-pat

标题

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Page 2 of 12

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE>

秘密大乘佛法(下)

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? Page 2

Microsoft Word - Sunday

鎶ョ焊0

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

eZiosuite

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

ASP 電子商務網頁設計

1.1 举例 : 在线用户 我们做一个新手级的在线用户列表, 原理是这样 : 1. 用户登录, 并把登录使用的用户名保存到 session 中, 通过 session 中 是否存在用户名判断用户是否已登录 session 可以在整个会话过程中保存用户信息, 不必每次刷新页面都重新 登录 2. 用户登

Microsoft Word - Broker.doc

untitled

當母親禱告時

96年第2次勘誤( 新增)

基于CDIO一体化理念的课程教学大纲设计

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

Ellen G. White Writings

中 山 大 学 珠 海 校 区 基 础 教 学 实 验 中 心 ( 下 简 实 验 中 心 ) 成 立 于 2000 年, 为 独 立 建 制 的 校 级 实 验 教 学 机 构 按 照 " 高 起 点, 高 标 准, 高 效 益 " 的 定 位 来 规 划 建 设, 是 一 个 实 验 资 源 高

nb.PDF

(CIP) Web /,. :, ISBN X.W T P393.4 CIP (2004) Web ( ) ( / ) : * 787



Ruby入门

“一带一路”(江苏南通)建设集合债券

untitled

昭英,

untitled

IDEO_HCD_0716

PowerPoint 演示文稿

浪潮集团信息化文案

Microsoft Word - ch02.doc

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

060522達文西密碼_全_.PDF


Microsoft Word - 日本赈灾志愿者手册.doc

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

untitled

untitled

册子0906

XXXXXXXX

设计模式 Design Patterns

FIT)

untitled

untitled


附件2

6. 繳 費 後 因 無 故 參 加 比 賽, 在 報 名 截 止 日 前 可 申 請 退 費, 需 於 協 會 網 站 下 載 並 填 寫 退 費 申 請 書 ; 若 已 超 過 報 名 截 止 日 期, 報 名 費 用 業 已 用 於 保 險 及 其 他 相 關 行 政 作 業 等 必 要 支

微博 工作报告

Microsoft Word 样章.dot

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

XmlHttp 是什么? 最通用的定义为 :XmlHttp 是一套可以在 Javascript VbScript Jscript 等脚本语言中通过 http 协议传送或从接收 XML 及其他数据的一套 API XmlHttp 最大的用处是可以更新网页的部分内容而不需要刷新整个页面 来自 MSDN 的

清宫秘方生男生女?胎儿性别预测表 预测表可信度如何?生男生女表准确吗?

H1_H4_TW

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

Information for consent

南華大學數位論文

Microsoft Word - diy_chi.doc

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他

Microsoft Word - RD技术通讯_2007_04_Vol_A.doc

),,,, : ,, (CIP) /. :,2004 ISBN G CIP (2004 ) : : / : 1

女明星生孩子就像变幻术,嗖一下就瘦了,难怪被疑心是代孕-文娱-明

以 元 卖 出 ( ) 远 望 谷 5000 远 望 谷 卖 出 成 交 5000 股 远 望 谷 ( ) 持 有 期 间 收 益 率 8.68% 歌 尔 声 学 ( ) 持 有 期 间 收 益 率 0.87% 10

Microsoft Word - json入门.doc

Microsoft Word - JavaWeb程序开发入门—教学大纲.doc

Guava学习之Resources

Microsoft Word - 01.DOC

2 Requirements Documentation Doc Name Doc No. 1.0 Version No. Total Page Generated By V6.0.0 Generated Date 2011/10/21 Checked By Checked Date 2011/10

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

untitled

國立高雄海洋科技大學

No Slide Title

REPORT ID: SS-220D COMPILED BY: HONG KONG HOUSING SOCIETY 香港房屋協會 PROJECT:THS2018 HONG KONG HOUSING SOCIETY 香港房屋協會 T-HOME TRANSITIONAL RENTAL HOUSING S

(1) 国 家 承 认 学 历 的 应 届 本 科 毕 业 生 ( 录 取 当 年 9 月 1 日 前 须 取 得 国 家 承 认 的 本 科 毕 业 证 书 含 普 通 高 校 成 人 高 校 普 通 高 校 举 办 的 成 人 高 等 学 历 教 育 应 届 本 科 毕 业 生, 及 自 学 考

ChinaBI企业会员服务- BI企业

2期封面-彩页.CDR

<94E05F967D97E15F96DA8E9F2E786C73>

Microsoft Word - RD技术通讯_2007_05_Vol_A.doc

TopTest_Adminstrator.doc

目 录 一. 关 于 本 次 债 券 发 行 的 发 行 主 体 2 二. 关 于 本 次 债 券 发 行 的 发 行 程 序 7 三. 发 行 人 的 控 股 股 东 实 际 控 制 人 9 四. 发 行 人 组 织 结 构 及 对 其 他 企 业 的 重 要 权 益 投 资 情 况 10 五.

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5

实施生成树

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech

RPC SOAP REST API API HTTP JSON XML PHP PHP PHP PHP PHP HTTP request/response cycle HTTP HTTP verbs headers Cookies JSON XML PHP RPC SOAP RESTful HTTP

Microsoft Word - 运营手册 1.0.docx

镇江市行政审批事项申报材料清单

锦成说33期 (电子)

建 名 录 库 为 中 医 药 传 统 知 识 筑 防 火 墙 中 国 中 医 药 报 7 月 20 日 报 道 中 医 药 传 统 知 识 保 护 名 录 数 据 库 已 录 入 从 32 种 隋 唐 前 古 籍 中 选 取 的 首 方 剂 袁 这 是 记 者 从 进 一 步 推 动

2003半年报正文.PDF

dark souls prepare to die edition keygen crack

;; 70, (2004 ),,,,: ;, (CIP) /. :, 2004 ISBN H1 CIP (2004 ) : : /

2015-2花丛

桃園縣八十九學年度國民小學 甄選介聘簡章

Transcription:

1 请求跳转及转发 1.1 举例 : 页面流转 可以在首页选择自己喜欢的颜色, 进入对应的页面 选择绿色, 会进入绿色界面 : 选择红色, 会进入红色界面 :

这里我们会看到四个页面 : 1. index.jsp 中选择颜色, 点击按钮后提交到 test.jsp 2. test.jsp 取得用户选择的颜色, 根据颜色值显示对应的页面 3. 如果选择了红色, 就显示 red.jsp 4. 如果选择了绿色, 就显示 green.jsp 在这里例子里,index.jsp,red.jsp,green.jsp 中的内容都是一样的, 处理逻 辑都在 test.jsp 中 现在面临的问题是如何在 test.jsp 决定实现 red.jsp 或者 green.jsp, 我们可 以在 forward 和 redirect 中任选其一 1.2 forward 方式 test.jsp 中需要这样写 : <%@ page contenttype="text/html; charset=utf-8"%> <% String color = request.getparameter("color"); if ("red".equals(color)) { request.getrequestdispatcher("red.jsp").forward(request,

response); } else if ("green".equals(color)) { request.getrequestdispatcher("green.jsp").forward(request, response); } %> 略过取得参数与比较参数值不提, 只关注 forward 的部分 : request.getrequestdispatcher("red.jsp").forward(request, response); 首先调用 request 的 getrequestdispatcher() 方法, 获得对应 red.jsp 的转 发器, 然后调用 forward() 方法执行请求转发 结果用户看到的就是 red.jsp 中 的结果了, 一个红色的页面 这里请大家注意一下浏览器的 url 地址 : 选择红色页面时 :

选择绿色页面时 :

于是, 无论转发至 red.jsp 还是 green.jsp, 地址栏上显示的都是 test.jsp 这是为什么呢? 通过下面的流程图会让我们容易理解 : 1. 浏览器向 test.jsp 发送请求 2. test.jsp 计算客户选择的颜色, 将请求转发至 red.jsp 3. red.jsp 返回响应给浏览器

这下知道为什么浏览器的地址没有变化了吧? 因为浏览器只是执行了对 test.jsp 的请求,test.jsp 到 red.jsp 的部分是在服务器内执行的, 浏览器并不知道服务器里到底发生了什么, 它只知道自己获得的响应是 test.jsp 发回来的, 甚至不知道服务器还有个 red.jsp 这就是请求转发 forward 了 1.3 redirect 方式 test.jsp 中需要这样写 : <%@ page contenttype="text/html; charset=utf-8"%> <% String color = request.getparameter("color"); if ("red".equals(color)) { response.sendredirect("red.jsp"); } else if ("green".equals(color)) { response.sendredirect("green.jsp"); } %> 略过取得参数与比较参数值不提, 只关注 redirect 的部分 : response.sendredirect("red.jsp"); response 翻译过来就是响应, 代表着 http 响应 调用 response 的 sendredirect("red.jsp") 方法, 将页面重定向到 red.jsp

再请大家注意一下浏览器的 url 地址 : 选择红色页面时 : 选择绿色页面时 :

与 forward 不同,url 地址一直在变化, 红色的时候显示 red.jsp, 绿色的时 候显示 green.jsp 再看一下流程图 : 1. 浏览器向 test.jsp 发送请求 2. test.jsp 计算客户选择的颜色, 向浏览器发送一个页面重定向 (redirect) 的响应, 响应中包含 red.jsp 的 url 地址

3. 浏览器根据页面重定向 (redirect) 响应中的 red.jsp 地址, 再次向服务 器发送请求, 这次请求的就是 red.jsp 了 4. red.jsp 执行, 返回响应

redirect 会触发另一个请求响应流程, 第二次请求的时候是由浏览器发起对 red.jsp 的请求, 所以 url 地址改变了 1.4 forward 和 redirect 的区别 3.4.1. 绝对路径与相对路径 1. 如果咱们使用的 URL 网址是以 / 开头的, 那么这个网址就叫做绝对 路径 2. 如果咱们使用的 URL 网址不是 / 开头的, 那么这个网址就叫做相对 路径 3.4.1.1. 相对路径 在相对路径上, 两者的表现是相同的 看如下例子 1. forward 的例子 :

<%request.getrequestdispatcher("result/result.jsp").forward(req uest, response);%> 这里的相对路径就是 result/result.jsp

因为刚刚请求的 test.jsp 是在 /test/ 下, 所以我们的当前路径就是 /test/, 执行 forward 的时候会寻找当前路径下的 result/result.jsp, 找到之后便转发请求 如果 :/test/ test.jsp 发送 forward 请求到 result/result.jsp 那么寻找的是 :/test/result/result.jsp 2. redirect 的例子 : <%response.sendredirect("result/result.jsp");%> 这里的相对路径也是 result/result.jsp 因为刚刚请求的 test.jsp 是在 /test/ 下, 所以我们的当前路径就是 /test/, 执行 redirect 的时候会把当前路径加上 result/result.jsp, 把结果作为重定向的地址发送给浏览器, 浏览器再去请求 /test/result/result.jsp, 从而得到响应 如果 :/test/ test.jsp 发送 sendredirect 请求到 result/result.jsp 那么寻找的是 :/test/result/result.jsp 3.4.1.2. 绝对路径 问题出现了, 绝对路径在 forward 和 redirect 中出现了差别, 还是刚才的情况, 但使用绝对路径的时候写法便不同了 1. forward 的例子 : <%request.getrequestdispatcher("/test/result/result.jsp"). forward(request, response);%>

这里的绝对路径就是 /test/result/result.jsp 在本地测试时,forward 把 http://localhost:8080/jsp3/ 当作根路径, 在它的基础上计算绝对路径 这是由 jsp 的部署方式决定的,webapp 里可以放好多项目, 为了让这些项目可以互不影响 独立运行, 不能让请求从一个项目直接在服务器内部转移到另一个项目 为了防止出现这种情况, 在执行 forward 的时候干脆把项目的路径当作根目录, 开发者看不到其他项目, 也就不会出现问题了 forward 在绝对路径时, 会从根目录计算路径, 去寻找, 如请求 : /test/result/result.jsp, 会找到 http://localhost:8080/jsp3/ test/result/result.jsp 2. redirect 的例子 : <%response.sendredirect("/test/result/result.jsp");%> 这里的绝对路径却是 http:localhost:8080//test/result/result.jsp

因为 redirect 会让浏览器重新发起一个新请求, 所以不会搅乱服务器里多个项目之间的关系, 也就不需要对它做限制, 如果需要在多个项目之间进行跳转, 就只能使用 redirect 不过因为重新发起了新的请求, 上次请求的那些数据都会丢失, 如果有什么重要的数据, 记得要重新设置 3.4.2. 注意 forward 导致找不到图片等资源 找不到图片, 找不到 js 脚本, 找不到 css 样式表, 都属于这个问题 这个问题, 是非常容易出现的, 只需要满足两个条件 : 1. forward 前后的 jsp 页面不在一个目录下 2. forward 后的 jsp 页面里使用相对路径引用一些资源, 图片,js 脚本,css 样式表什么的 ***