jsp路径获取

第一种情况 :直接访问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'/>

你可能感兴趣的:(java,jsp)