JSP的相对路径使用方法详细解说

问题描述:
 

要在/jsp/index.jsp文件使用图片,如何计算相对路径? 经过Servlet,struts转发后又如何计算相对路径?

目录结构: 

应用名字:Demo 

demo 

—-webroot 

—-images 

—-go.gif 

—-jsp 

—-index.jsp 

—-css 

—————————————————————————— 

第一种情况:直接访问JSP文件
 

URL是 http://localhost/Context path/jsp/index.jsp 

要在index.jsp引用go.gif文件: 

1、使用决对路径 

<img src='<%=request.getContextPath() %>/images/go.gif’/> 

浏览器寻找方式: 域名+/Context path/images/go.gif ,可找到。 

2、使用相对路径 

<img src=’../images/go.gif’/> 

浏览器寻找方式:通过地址栏分析,index.jsp所在目录(jsp)的上一层目录(WebRoot)下的images/go.gif文件 。 

3、使用base href 

写<%=request.getContextPath() %>太麻烦,可以在每一个jsp文件顶部加入以下代码 

<% String path = request.getContextPath(); String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”; %> <base href=”<%=basePath%>”> 

<img src=’images/go.gif’/> 

浏览器寻找方式: basePath的值http://localhost/Context path/再加上images/go.gif,可找到。 

—————————————————————————— 

第二种情况:servlet转发到jsp
 

1、使用相对路径 

URL是http://localhost/Context path/servlet_2 (转发到/jsp/index.jsp) 

错误: 

根据/jsp/index.jsp路径计算,得到 <img src=’../images/go.gif’/> 

正确: 

<img src=’images/go.gif’/> 

原因: 

index.jsp是保存在服务器端的/jsp/index.jsp目录下面,但通过转发后浏览器并不知道/jsp/目录的存在,因为地址栏中没有体现出来。所以服务器端/jsp/目录并不会对相对路径产生影响 

浏览器寻找方式:通过地址栏分析http://localhost/Context path/servlet_2 ,相对于servlet_2所在目录(/)下面找到images/go.gif文件 

2、使用相对路径 

URL是http://localhost/Context path/servlet/ser/ser/servlet_1 (转发到/jsp/index.jsp) 

“/servlet/ser/ser/servlet_1 是在web.xml文件配置的 

错误: 

根据/jsp/index.jsp路径计算,得到 <img src=’../images/go.gif’/> 

正确: 

<img src=’../../../images/go.gif’/> 

原因: 

index.jsp是保存在服务器端的/jsp/index.jsp目录下面,但通过转发后浏览器并不知道/jsp/目录的存在,因为地址栏中没有体现出来。所以服务器端/jsp/目录并不会对相对路径产生影响 

浏览器寻找方式:通过地址栏分析http://localhost/Context path/servlet/ser/ser/servlet_1,相对于servlet_1所在目录(ser)的上一层目录的上一层目录的上一层目录(/)下的images/go.gif文件 

3、使用决对路径 

<img src='<%=request.getContextPath() %>/images/go.gif’/> 

—————————————————————————— 

总结:
相对路径是由浏览器通过地址栏分析出来的,与服务器端文件的存放路径没有关系,由其是使用Servlet,struts转发到某jsp文件后,某jsp在服务器端存放的位置是/a/b/c/d/f/g.jsp , 但经过Servlet,struts转发后,浏览器的地址栏可不一定是/a/b/c/d/f/这样的层次。所以相对路径的计算以浏览器地址栏为准。 

struts2中可以使用命名空间,来保证浏览器地址栏中的目录层次与服务器端目录层次的一致性,这样程序员通过服务器端的目录层次计算相对路径,在浏览器中也是正常的。 

但我们理解了原理,就算不使用命名空间,自己也有强大的控制力。

转载请注明:代码学堂>编程开发 > jsp教程 > JSP的相对路径使用方法详细解说

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!10210454@qq.com
2. 本站不保证所提供所有下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有RB奖励和额外RMB收入!

磊宇堂正在使用的服务器 维护管理由磊宇云服务器提供支持

磊宇堂 » JSP的相对路径使用方法详细解说

提供最优质的资源集合

立即查看 了解详情