關於IDEA中添加靜態資源(html,jpg等)后找不到資源(404 not found),以及WEB-INF目錄介紹


關於靜態資源的加載

在IDEA中的java web application(或者maven項目)添加新的靜態資源時(如html,jpg,gif等),常常會遇到靜態資源無法加載的情況。這樣的情況我們一般都會想到首先通過熱部署或者重啟tomcat服務器來加載資源。

但是,有些時候,無論我們的tomcat是否熱部署或者不管怎么重啟tomcat都無法訪問這些資源(提示404找不到),然后就百思不得其解。這種時候可以嘗試一下重啟整個IDEA,重啟之后或許就能夠找到這些靜態資源。

這可能是由於out目錄(idea中的Excluded輸出目錄,默認為橘紅色)中沒有加載到這些資源,將需要加載的靜態資源手動復制到對應的目錄下就行了。這樣就可以避免我們在添加靜態資源時反復重啟IDEA了。
在這里插入圖片描述
當然上述內容是建立在靜態資源沒有放在不合適位置的前提下。

一般情況下,這些靜態資源往往放置於與WEB-INF同一級的webapp或者WebRoot文件夾(或其子目錄)>下,而不能放在WEB-INF目錄中。

說到這里,咱就順便介紹一下web項目中的WEB-INF目錄

web項目中的WEB-INF目錄

WEB-INF是Java web的安全目錄,其中一般包含:

  1. /WEB-INF/web.xml : web應用的配置文件,描述servlet和其他應用組件配置及命名規則,相信大家如果配置過servlet對它一定不陌生。
  2. /WEB-INF/classes/ :該目錄包含站點的class文件,包括 servlet class 和非servlet class。
  3. /WEB-INF/lib/ : 存放web application所需要的各種jar包,一般需要在IDEA的Project Structure的Modules中將這個目錄添加到依賴。這個目錄一般放置僅在這個web應用中用到的jar文件,例如數據庫驅動jar文件(我們鏈接postgis數據庫時就需要用到)。
  4. 由於WEB-INF目錄是不對外開放的,外部沒辦法直接訪問到(即不能通過URL訪問)。只能通過映射來訪問,比如映射為一個action或者servlet通過服務器端跳轉來訪問到具體的頁面。這樣,在WEB-INF目錄中就可以存放一些不對外開放的頁面,限制用戶的訪問,提高安全性。


免責聲明!

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



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