1. 程式人生 > >java web項目WEB-INF與META-INF的作用

java web項目WEB-INF與META-INF的作用

註冊 恰恰 align bsp oot except sdn 載器 自動

/WEB-INF/web.xml

Web應用程序配置文件,描述了 servlet 和其他的應用組件配置及命名規則。

/WEB-INF/classes/
包含了站點所有用的 class 文件,包括 servlet class 和非servlet class,他們不能包含在 .jar文件中。
/WEB-INF/lib/
存放web應用需要的各種JAR文件,放置僅在這個應用中要求使用的jar文件,如數據庫驅動jar文件。

/WEB-INF/src/
源碼目錄,按照包名結構放置各個Java文件。

/WEB-INF/database.properties
數據庫配置文件

/WEB-INF/tags/

存放了自定義標簽文件,該目錄並不一定為 tags,可以根據自己的喜好和習慣為自己的標簽文件庫命名,當使用自定義的標簽文件庫名稱時,在使用標簽文件時就必須聲明正確的標簽文件庫路徑。例如:當自定義標簽文件庫名稱為 simpleTags 時,在使用 simpleTags 目錄下的標簽文件時,就必須在 jsp 文件頭聲明為:<%@ taglibprefix="tags" tagdir="/WEB-INF /simpleTags" % >。

/WEB-INF/jsp/

jsp 1.2 以下版本的文件存放位置。改目錄沒有特定的聲明,同樣,可以根據自己的喜好與習慣來命名。此目錄主要存放的是 jsp 1.2 以下版本的文件,為區分 jsp 2.0 文件,通常使用 jsp 命名,當然你也可以命名為 jspOldEdition 。

/WEB-INF/jsp2/

與 jsp 文件目錄相比,該目錄下主要存放 Jsp 2.0 以下版本的文件,當然,它也是可以任意命名的,同樣為區別 Jsp 1.2以下版本的文件目錄,通常才命名為 jsp2。

META-INF

相當於一個信息包,目錄中的文件和目錄獲得Java 2平臺的認可與解釋,用來配置應用程序、擴展程序、類加載器和服務
manifest.mf文件,在用jar打包時自動生成。

以下轉載至 http://blog.csdn.net/saygoodbyetoyou/article/details/9944773

請求頁面為何要放到META-INF目錄下

觀點一:(較為贊同)
安全性不是真正的原因,因為jsp是要解析後才顯示到瀏覽器的,即使用戶知道你jsp的路徑,也不可能通過瀏覽器看到jsp源碼的,而如果是通過其它手段入侵服務器的話,放在WEB-INF又和放在別的地方有什麽區別呢???
真正的原因是,對於早期直接嵌入Java代碼的jsp,是直接給出jsp路徑給用戶訪問的,這種情況恰恰不能放在WEB-INF,而到了現在的mvc模式,jsp已經不是曾經那個包含完整邏輯的jsp,而僅僅充當view層的模板,必須要填入model數據後進行渲染,才能生成可讀的頁面,這樣的模板是不能讓用戶直接訪問的,直接訪問的話要麽是一堆各種空白,或者一堆占位符,甚至一堆NullPointException,所以需要放到WEB-INF裏。補充一下,“安全性問題”指的是“不允許你訪問,否則會對我不好”,而這裏的情況其實是“不建議你訪問,否則會對你不好”,應該屬於健壯性的範疇。
觀點二:
放到WEB-INF下的Jsp文件,如果你直接去訪問這個Jsp是不可以的,必須通過Action的跳轉,這樣就能夠理解為什麽安全性高了,對於用戶是不可見的,對於一些對於用戶,可以直接訪問的,如,登錄,註冊頁面,可以直接放在webroot下,這個也是根據你系統的需求了。
觀點三:
通過設置過濾器,放在webroot下面的文件也可以實現不能直接訪問。所以說放在哪裏就看習慣是什麽樣了。
一般項目都是要求隱藏性的,只讓客戶通過請求訪問而不是直接訪問jsp頁面。若放在webroot下面,肯定要加一個過濾器阻止所有對*.jsp的訪問。只要比較的話:
放在webroot下面:優點,程序結構清晰,便於編碼和維護;缺點,要加過濾器。
放在web-inf下面:優點,不用過濾器;缺點,打亂了程序結構,編碼和維護麻煩
觀點四:
為了減少風險,可以把這些頁面文件移到WEB-INF 目錄下。基於Servlet的聲明,WEB-INF不作為Web應用的公共文檔樹的一部分。因此,WEB-INF 目錄下的資源不是為客戶直接服務的。我們仍然可以使用WEB-INF目錄下的JSP頁面來提供視圖給客戶,客戶卻不能直接請求訪問JSP。JSP存放在 WEB-INF 目錄下更為安全

java web項目WEB-INF與META-INF的作用