首页 > 代码库 > java、JSP web项目中的路径问题
java、JSP web项目中的路径问题
java web项目中的路径,有相对路径和绝对路径
什么是相对路径呢 举个简单例子
我们有项目 test 发布后地址 http://localhost:8080/test/
页面 qiantai/login.jsp 页面中链接 <a href=http://www.mamicode.com/"index.jsp" />
JSP页面相相对寻址 链接的最终地址是 http://localhost:8080/Test/qiantai/index.jsp
相对路径是这么一个过程 首先取当前文件的路径 也就是 http://localhost:8080/test/qiantai/
然后拼接链接的地址 index.jsp 所以结果就如上 ......qiantai/index.jsp
在CSS、JS的引用中为防止后台转发造成的问题,应尽量使用绝度路径
第一种方案
JSP页面中自带两个路径参数 path和basePath
页面的开头,有这么一段代码
<%
String path = request.getContextPath(); 获得当前路径 例如 http://localhost:8080/test/qiantai/
//获得本项目的地址 例如 http://localhost:8080/test/ 赋值给 basePath
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//将项目路径 basePath 放入pageContext中,待以后用EL表达式读出
pageContext.setAttribute("basePath",basePath);
%>
链接改用 <a
从而构成一个绝对路径 http://localhost:8080/test/qiantai/index.jsp
但是这样做有一个很不好的地方,那就是我们必须要在每个链接的前面都要加上
第二种方案
使用HTML中的base标签(推荐使用)
对base的介绍:base
URL默认情况下,页面中的链接(包括样式表、脚本和图像的地址)都是相对于当前页面的地址(即:浏览器地址栏里的请求URL)。
我们可以使用
<head>
<!--
<base
</head>
这样就可以直接使用相对路径 <a href=http://www.mamicode.com/"index.jsp" />
设置了
我们可以看到JSP返回的html代码中,包含了
也就是说,在本html文件中,遇到的所有
这样就不用担心转发操作(forward)或
也可以很好的避免因转发造成的css或js引用地址错误问题,以为页面的路径都是以base为基准的。
java、JSP web项目中的路径问题