JSP绝对路径与相对路径_第1页
JSP绝对路径与相对路径_第2页
JSP绝对路径与相对路径_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、绝对路径与相对路径 1. 如果咱们使用的URL网址是以“/”开头的,那么这个网址就叫做绝对路径。2. 如果咱们使用的URL网址不是“/”开头的,那么这个网址就叫做相对路径。在相对路径上,两者的表现是相同的。看看lingo-sample/03-03/这个例子,如果我们去请求relative/forward.jsp或redirect.jsp,然后从这里再跳转向它下面的result/result.jsp会怎样呢?1. forward的例子:2. 这里的相对路径就是result/result.jsp。因为刚刚请求的test.jsp是在/03-03/relative/下,所以我们的当前路径就是/03-0

2、3/relative/,执行forward的时候会寻找当前路径下的result/result.jsp,找到之后便转发请求。3. redirect的例子:4. 这里的相对路径也是result/result.jsp。因为刚刚请求的test.jsp是在/03-03/relative/下,所以我们的当前路径就是/03-03/relative/,执行redirect的时候会把当前路径加上result/result.jsp,把结果作为重定向的地址发送给浏览器,浏览器再去请求/03-03/relative/result/result.jsp,从而得到响应。绝对路径问题出现了,绝对路径在forward和red

3、irect中出现了差别,还是刚才的情况,但使用绝对路径的时候写法便不同了。1. forward的例子:2. 这里的绝对路径就是/relative/result/result.jsp。在本地测试时,forward把http:/localhost:8080/03-03/当作根路径,在它的基础上计算绝对路径。这是由jsp的部署方式决定的,webapp里可以放好多项目,为了让这些项目可以互不影响、独立运行,不能让请求从一个项目直接在服务器内部转移到另一个项目。为了防止出现这种情况,在执行forward的时候干脆把项目的路径当作根目录,开发者看不到其他项目,也就不会出现问题了。3. redirect的例

4、子:4. 这里的绝对路径却是/03-03/absolute/result/result.jsp。在本地测试时,redirect把http:/localhost:8080/当作根路径,在它的基础上计算绝对路径。因为redirect会让浏览器重新发起一个新请求,所以不会搅乱服务器里多个项目之间的关系,也就不需要对它做限制,如果需要在多个项目之间进行跳转,就只能使用redirect。不过因为重新发起了新的请求,上次请求的那些数据都会丢失,如果有什么重要的数据,记得要重新设置。forward导致找不到图片找不到图片,找不到js脚本,找不到css样式表,都属于这个问题。要演示这个问题,是非常容易的,只需

5、要满足两个条件:1. forward前后的jsp页面不在一个目录下。2. forward后的jsp页面里使用相对路径引用一些资源,图片,js脚本,css样式表什么的。03-04里就模拟了这样一个环境,你进入http:/localhost:8080/03-04/,选择“有问题的”:打开03-04可以看到如下的目录结构:|-+ 03-04 |- index.jsp |- test.jsp |-+ result |- success.jsp |- failure.jsp |- lingo.png 刚才咱们看到的页面是failure.jsp,它里边显示图片的部分是: 这时候就有疑问了,lingo.pn

6、g和failure.jsp明明在同一个目录下,为什么无法显示。现在请在无法显示的图片上,点击鼠标右键,选择属性,让我们看一下图片的请求地址:图片的位置本来在http:/localhost:8080/03-04/result/lingo.png,但请求的地址却是http:/localhost:8080/03-04/lingo.png。问题就是丢掉了中间的/result。再试一次index.jsp上的“没问题的”:这次我们看到的页面是success.jsp,它里边显示图片的部分是: 结果手工加上result这段路径后就可以显示图片了。这个问题还要追溯到浏览器对html的处理方式,在html里包含的

7、图片,css样式表,js脚本,视频等等外部资源,都需要浏览器再次向服务器发起请求。如果这些外部资源使用了相对路径,浏览器就会在当前请求路径的基础上,加上相对路径拼接出完整的http请求,发送给服务器。这个例子中,我们请求http:/localhost:8080/03-04/test.jsp,浏览器得到的当前路径就是http:/localhost:8080/03-04/,failure.jsp中图片的相对路径是lingo.png,那么拼接的结果是http:/localhost:8080/03-04/lingo.png。不要怪浏览器太傻,是因为使用forward的时候浏览器并不清楚这些改变。它一直认为,既然自己请求的是test.jsp,返回的自然就是test.jsp的内容,那么再使用test.jsp当作当前路径去计算相对路径当然没有问题。是我们欺骗了浏览器,在服务器偷偷改变了请求流向,返回了其他页面的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论