1.最近在写PHP程序的时候总是被PHP里面的文件目录搞不清楚。include的时候总有不爽的时候。
看看JSP的处理
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">
这说明在该页面中的所有路径都是于项目的WebRoot为相对路径,如项目的WebRoot下的Images/xxx.jpg,则在任何含有
的页面中都是以Images/xxx.jpg来访问该图片。如WebRoot/jsp/first.jsp
在first.jsp中含有xxx.jpg应该为
Html代码
<img src="Images/xxx.jpg"/> <img src="Images/xxx.jpg"/>
而不是
Html代码
<img src="../Images/xxx.jpg"/> <img src="../Images/xxx.jpg"/>
好处:
1.不需要在页面中以../或../../来回到上级或上上级目录
2.都是相对于WebRoot目录,实现了路径的统一
切记:
1. 整个页面的相对路径是:http://localhost:8002/url/ 即项目的根目录
2. 比如我现在要引入一个其他的文件的话不用再去写../../这样的了!直接写相对这个根的位置即可!
<img src="static/images/hi.gif" />看到没有
这表示我们的图片是相对于上面的绝对路径的位置是这个的!
如果你想写 <img src="../../static/images/hi.gif" />这样的相对路径的话呢
你就得将这个基本的目录去掉 <base href="<%=basePath%>">去掉了!
不过我的方案是 :CSS、JS、IMAGES都是走静态域名所以都是使用了绝对目录!
好像这个东西不能处理include 哦。我测试发现使用<jsp:include page="a.jsp">
结果找不到了
还得使用<jsp:include page="../../a.jsp"></jsp:include>
这样的。难道说这个东西只会影响到静态文件的引入。
哦我发现a 标签也会受到其影响哦!
总结:
base标记是一个基链接标记,是一个单标记(此标签不需要关闭)。用以改变文件中所有连结标记的参数内定值。它只能应用于标记<head>与</head>之间。
你网页上的所有相对路径在链接时都将在前面加上基链接指向的地址。
会受影响的包括:
图片<img src
声音文件、FLASH、等
JS文件、CSS文件的引入路径
页面的HREF即超链接受影响
但是对JSP的代码不会有什么影响的!
以后如果在写JSP页面的时候是可以非常好地去参考这个哦!
延伸到PHP里面