數(shù)據(jù)加載中……
          Jsp路徑問(wèn)題

          一. 問(wèn)題

              JSP 中究竟采用絕對(duì)路徑還是采用相對(duì)路徑隨著所采用技術(shù)的越來(lái)越復(fù)雜,這個(gè)問(wèn)題也變得越來(lái)越難以解決。

          1) 采用相對(duì)路徑遇到的問(wèn)題

          l          相對(duì)路徑固然比較靈活,但如果想復(fù)制頁(yè)面內(nèi)的代碼卻變得比較困難,因?yàn)椴煌捻?yè)面具有不同的相對(duì)路徑,復(fù)制后必須修改每一個(gè)連接的路徑。

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

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

          解決以上問(wèn)題似乎只有使用絕對(duì)路徑了。

          2) 采用絕對(duì)路徑遇到的問(wèn)題

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

          二. 解決方案

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

          ”/images/title.gif” ,改為

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

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

          缺點(diǎn):

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

          2)  采用相對(duì)路徑,在每個(gè) JSP 文件中加入 base 標(biāo)簽,如:

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

          這樣所有的路徑都可以使用相對(duì)路徑。

          缺點(diǎn):

          對(duì)于被包含的文件依然無(wú)效。

              真正使用時(shí)需要靈活應(yīng)用1)和2),寫(xiě)出更加健壯的代碼。

          posted on 2009-10-13 15:18 mingruofei 閱讀(318) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 金秀| 三都| 北海市| 江都市| 洪泽县| 临沭县| 长宁区| 彰化市| 巴彦淖尔市| 江都市| 赤壁市| 平果县| 海口市| 曲水县| 华宁县| 昔阳县| 阜城县| 白河县| 仪陇县| 营山县| 潍坊市| 进贤县| 科技| 黔西县| 柘城县| 肇源县| 甘孜| 紫阳县| 金华市| 股票| 泰宁县| 葵青区| 遂昌县| 岚皋县| 闻喜县| 新昌县| 岳阳市| 渝北区| 揭阳市| 绥德县| 开封市|