標籤:應用 定義 list 特殊情況 tps images https path man
一個最簡單的Web應用的目錄結構如下所示:
Web應用的結構定義在Servlet的規範中,目前最新版本為3.1。
:https://jcp.org/aboutJava/communityprocess/final/jsr340/index.html
Web應用的目錄結構還是很簡單的,不需要開發工具直接按目錄結構組織檔案內容,部署到Servlet容器中就可以直接使用,根目錄就是應用的Context Path。
JSR340即Servlet3.1的規範中描述:Context path of an application determines the URL namespace of the contents of the Web application.
如果只是靜態檔案,都可以不需要WEB-INF以及web.xml,SimpleWebProject下只有一個index.jsp是可以直接存取到的。
另外Servlet規範是支援以程式方式進行配置的,這樣也不需要web.xml。
應用比較特殊的是WEB-INF目錄,此路徑不可以由外部直接存取到,因此對於class、jar、設定檔等需要受保護的資源,都應該放到此目錄下。
但對於jar包中/META-INF/resource又是一種特殊情況,這裡的資源被認為是靜態資源,又可以直接被外部存取(其實這麼用的情境很少,不用過多關注)。
META-INF目錄也比較特殊,外部不能直接存取。
如果發布程式使用war包,打包程式會把一些應用相關的資訊寫入到MANIFEST.MF檔案中。
如果使用maven進行依賴管理,還會把maven的目錄,內部是pom相關內容。
關於Class Loader:
應用的Class Loader是容器的Class Loader的一個子類。
應用的Class Loader需要能夠載入class、lib以及各種資源,並且class的優先順序高於lib。
所有的Class Loader都不能覆蓋Java SE platform class,比如java.*和javax.*命名空間的資源等。
關於部署描述符(web.xml)
主要用於定義ServletContext、Session、Servlet、Servlet-Mapping、Listener、Filter,其它像Welcome File list等用的並不多。
Servlet容器根據web.xml就建立了外部請求到部署應用的Servlet的映射關係了。
1.2 Web工程的組織圖