2)採用絕對路徑遇到的問題
隨 着不一樣的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 表達式取出來。
- </pre><pre name="code" class="html"><c:set var="ctx" value="${pageContext.request.contextPath}" />