關於JAVA EE項目在WEB-INF目錄下的jsp頁面如何訪問WebRoot中的CSS和JS文件


找了這么久資料,總算解決了

感謝博客園:http://www.cnblogs.com/xsht/p/5275081.html

感謝百度:http://zhidao.baidu.com/link?url=Vz4TlygvnMyYVj105bCuzkusjF0G5rM6opHvEzhcCaJK5s1gFUZ3PBgAWCNsfY1RmtPf4ZEo8EV_Gd7SYKV4S_

 

在有Struts部署的Java EE環境中,我們一般把jsp頁面寫在WebRoot\WEB-INF\content 目錄下,這樣使得jsp頁面一定需要struts的控制轉發才可訪問,提高頁面安全性。

但是今天在jsp頁面中應用WebRoot目錄中的css,js文件發現十分困難,先看看我的文件結構:

目標是在index.jsp中訪問default.css。

defautl.css是在index.jsp目錄的父目錄的父目錄的CSS目錄下。所以我這樣寫:

ps:空格為故意添加

        <link href="../ ../css/default.css" rel="stylesheet" type="text/css"/>
        <link href="../ ../css/uploadify.css" rel="stylesheet" type="text/css"/>

在Eclipes中也出現超鏈接提示,說明目錄正確,但是結果失敗。

查詢資料后,在百度百科中看到:

http://baike.baidu.com/view/1745468.htm

TomCat 服務器下的WEB-INF文件夾是一個非常安全的文件,在頁面中不能直接訪問其中的文件,必須通過web.xml文件對要訪問的文件進行相應映射才能訪問。

 

從上面的實驗可以看出,不但是直接訪問,使用" ../ ../ "之類的間接訪問也不能成功。

 

在此多方查詢資料之后,嘗試使用如下方法訪問:

         <!-- 輸出為項目根目錄,即WebRoot -->
         <%String path = request.getContextPath(); %>
         <link href="${path}/css/default.css" rel="stylesheet" type="text/css"/>
         <link href="${path}/css/uploadify.css" rel="stylesheet" type="text/css"/>

 

果不其然,頁面成功讀出了css文件中的樣式,達到目的。

 

不過此頁面中存在java腳本,不夠規范,查詢資料后,用以下純EL表達式實現:

      <c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
         <link href="${path}/css/default.css" rel="stylesheet" type="text/css"/>
         <link href="${path}/css/uploadify.css" rel="stylesheet" type="text/css"/>

先將ContextPath放如page中,再使用el表達式取出,問題得以解決。

 

但是,也有不少程序猿是在用Struts_2的標簽,要做到上面的效果,就有區別了

Struts_2的標簽要訪問到 pageContext.request.contextPath,寫法上就與jstl的有區別

    <s:set value="#request.get('javax.servlet.forward.context_path')" var="cssPath" scope="page"/>
    <link rel="stylesheet" href="${cssPath}/css/index.css" />

 

Struts_2標簽set的value屬性要進行訪問對象,語法就是 value="#對象" 或者 value="%{對象}"兩種寫法

 

 

 

----------------------------------------------------------------------

(over)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM