隨筆 - 12  文章 - 20  trackbacks - 0
          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          一. 問題

              JSP 中究竟采用絕對路徑還是采用相對路徑隨著所采用技術的越來越復雜,這個問題也變得越來越難以解決。

          1) 采用相對路徑遇到的問題

          l          相對路徑固然比較靈活,但如果想復制頁面內的代碼卻變得比較困難,因為不同的頁面具有不同的相對路徑,復制后必須修改每一個連接的路徑。

          l          如果頁面被多于一個的頁面所包含,那么被包含頁面中的相對路徑將是不正確的。

          l          如果采用 Struts Action 返回頁面,那么由于頁面路徑與 Action 路徑不同,使得瀏覽器無法正確解釋頁面中的路徑,如頁面為 /pages/cust/cust.jsp ,圖片所有目錄為 /images/title.gif ,這時在 /pages/cust/cust.jsp 中的所用的路徑為 ”../../images/title.gif” ,但是如果某一個 Action Forward 指向這個 JSP 文件,而這個 Action 的路徑為 /cust/manage.do ,那么頁面內容中 ”../../images/title.gif” 就不再指向正確的路徑了。

          解決以上問題似乎只有使用絕對路徑了。

          2) 采用絕對路徑遇到的問題

          l          隨著不同的 Web 應用發布方式,絕對路徑的值也不同。如 Web 應用發布為 MyApp ,則路徑 ”/MyApp/images/title.gif” 是正確的,但發布為另一應用時如 MyApp2 ,這個路徑就不對了,也許這個情況比較少,但以 default 方式發布 Web 應用時以上絕對路徑也不同: ”/images/title.gif”

          二. 解決方案

           

           

          1) 采用絕對路徑,但為了解決不同部署方式的差別,在所有非 struts 標簽的路徑前加 ${pageContext.request.contextPath} ,如原路徑為:

          ”/images/title.gif” ,改為

          “${pageContext.request.contextPath}/images/title.gif”

          代碼 ” ${pageContext.request.contextPath}” 的作用是取出部署的應用程序名,這樣不管如何部署,所用路徑都是正確的。

          缺點:

           

           

           

          操作不便,其他工具無法正確解釋 ${pageContext.request.contextPath}

          2) 采用相對路徑,在每個 JSP 文件中加入 base 標簽,如:

          <base href="http://${header['host']}${pageContext.request.contextPath}/pages/cust/relation.jsp" />

          這樣所有的路徑都可以使用相對路徑。

          缺點:

           

           

           

          對于被包含的文件依然無效。

              真正使用時需要靈活應用1)和2),寫出更加健壯的代碼。

          posted on 2008-12-25 12:20 沖出銀河系 閱讀(2069) 評論(0)  編輯  收藏 所屬分類: java

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 和政县| 栖霞市| 桓台县| 巧家县| 德兴市| 顺义区| 孟州市| 苍溪县| 松原市| 龙海市| 诸城市| 饶平县| 浏阳市| 苍溪县| 冕宁县| 册亨县| 临澧县| 湾仔区| 沙雅县| 清苑县| 河津市| 体育| 和静县| 防城港市| 湘潭县| 抚顺县| 扎囊县| 安阳市| 河北区| 青海省| 东明县| 沈丘县| 任丘市| 九江市| 重庆市| 肃北| 永康市| 定安县| 富顺县| 大姚县| 西城区|