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裡面