J2EE 關於JSP中include標籤動態引入其他文件的問題

    最近閒來無事在慢慢練習搭建開發框架,遇到了很多問題,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 &quot;/apps/dms/jiaoyanke/&lt;%= path %&gt;/jsp/commonCssAndJs.jsp&quot; 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 %>"的文件這樣的錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章