Jsp 路徑問題

來源:互聯網
上載者:User

擷取項目路徑:${pageContext.request.contextPath}

<script type="text/javascript" src="${pageContext.request.contextPath}/wh/js/system/rainUtil.js"></script>

一.問題 

    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),寫出更加健壯的代碼。 

在使用的時候可以使用${pageContext.request.contextPath},也同時可以使用<%=request.getContextPath()%>達到同樣的效果,同時,也可以將${pageContext.request.contextPath},放入一個JSP檔案中,將用C:set放入一個變數中,然後在用的時候用EL運算式取出來。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.