最近閑來無事在慢慢練習搭建開發架構,遇到了很多問題,GOOGLE經常被斷網,無奈弄了個VPN,技術類東西還是喜歡用GOOGLE查。再一個REDZ.COM這個搜尋引擎也非常好用,搜出來的垃圾站很少。都是題外話。
用架構做的應用,差不多每個頁面都要包含一些架構需要並且通用的JS指令碼以及CSS樣式表,這樣我就想專門做一個JSP頁面用來輸出引用通用的JS指令碼以及CSS樣式表的HTML代碼。然後需要引用通用JS指令碼以及CSS樣式表的JSP頁面就通過include標籤進行引用。這樣可以保證應用所有頁面引用架構指令碼以及CSS樣式表的統一性。架構發生變更只需要修改這一個JSP檔案即可。當然,最好的是辦法還是使用自訂標籤對引入JS指令碼等的HTML代碼進行輸出,這樣有利於前端開發人員與伺服器端開發人員更好的獨立處理自己那部分工作。
最初因為路徑問題嘗試這樣使用include標籤, 結果當然是無法找到資源,開始我以為這裡無法使用<%= %>進行輸出。
<jsp:include page="<%=path %>/jsp/commonCssAndJs.jsp" flush="true" />
使用了這列標籤後,控制台顯示了錯誤資訊。重新整理多次,有的時候錯誤為: attribute for %>" is not properly terminated
,有的時候錯誤為:File "/apps/dms/jiaoyanke/<%= path %>/jsp/commonCssAndJs.jsp" not found
後來查了下 dynamic include 相關的文章,再加上自己的嘗試,總結如下:
1. 標籤的page屬性值可以是相對路徑URL或者<%= 運算式 %>,但只能同時存在其中一種。參考:.http://java.sun.com/products/jsp/tags/11/syntaxref1112.html
2. 當page屬性值為相對路徑URL時 , 樣本:
假如Tester.jsp 中引用 beIncluded.jsp
Tester的相對路徑為/apps/jsp/Tester.jsp. 則如果Tester.jsp中include標籤的page屬性為"/app2/beIncluded.jsp",則會引用相對路徑為檔案/app2/beIncluded.jsp.
當page屬性為"app2/beIncluded.jsp"時則引用相對路徑為/apps/jsp/app2/beIncluded.jsp 這個檔案
3. 當page屬性值為<%= 運算式%>時,其實路徑規則與上邊是一樣的,但是需要注意的是:
page屬性值的雙引號中只能以後面的形式存在 "<%= path %>" ,"<%= path %>/***.jsp"這樣是不行的,甚至引號與<%=%>之間連空格也不能存在,即" <%= path %>"
也是不行的。如果雙引號和<%= path %>間存在空格則<%= path %>會作為一個字串直接進行解釋。控制台會提示找不到路徑為" <%= path %>"的檔案這樣的錯誤。