javaweb應用程式的規範目錄結構
4. WEB-INF/lib 目錄,Java 類庫檔案(*.jar)(可選)
公開目錄存放所有可以被使用者的訪問的資源, 包
括 .html, .jsp, .gif, .jpg, .css, .js, .swf等等。
WEB-INF 目錄是一個專用區域, 容器不能把此目錄中的內容提供給使用者。這個目錄下的檔案只供容器使用, 裡面包含不應該由客戶直接下載的資源, 例如: Servlet(這些元件包括應用程式邏輯以及對其他資源如資料庫的可能訪問), Web 應用程式中servlet 可直接訪問的其他任何檔案, 在伺服器方執行或者使用的資源(如Java 類檔案和供servlet 使用的JAR 檔案), 由您的應用程式生成的臨時檔案, 釋出描述符以及其它任何配置檔案。這些資源是專用的, 因此只能由它們自己的Web 應用程式及容器訪問。特別地, JSP/Servlet 程式檔案也能通過ServletContext 訪問到這個目錄下的檔案, 例如JSP 中可以通過
application.getRealPath(―/WEB-INF/web.xml‖) 訪問到釋出描述符檔案的路徑。 Web 容器要求在你的應用程式中必須有WEB-INF 目錄。注意: 如果你的Web 應用程式中沒有包含這個目錄, 它可能將無法工作(這是因為不同的伺服器對此情況的處理不甚一致,所以有時候也能工作)。
WEB-INF 中包含著釋出描述符, 一個classes 目錄和一個lib 目錄, 以及其它內容。釋出描述符(deployment descriptors)是J2EE Web 應用程式不可分割的一部分(也就是說是它的最小部分, 必不可缺的一部分)。它們在應用程式釋出之後幫助管理 Web 應用程式的配置。對於 Web 容器而言, 釋出描述符是一個名為web.xml 的XML 檔案, 儲存在Web 應用程式的 /WEB-INF 目錄下。
釋出描述符有多種用途:
• 為 Servlet 和Web 應用程式提供初始化引數 這使我們的Web 應用程式中的硬性編寫的程式碼的初始化值更少。例如常見的<param-name>, <param-value>標記, 就可以為Servlet 提供引數, 這個引數可以在init() 方法中載入。 Struts 的ActionServlet也是通過這種方式來找到它們需要的配置檔案struts-config.xml 的位置, 從而載入並分析它,來初始化Struts 框架用到的各種FromBean, Action, Forward 等。
• Servlet/JSP 定義可以為 Web 應用程式中的每個Servlet 或者預編譯的JSP 網頁提供定義。包括 Servlet/JSP 的名字, Servlet/JSP 的類以及一個可選的描述。
• Servlet/JSP 對映 Web 容器使用這些資訊把進入請求對映到servlet 和JSP 網頁。
• MIME 型別由於每個 Web 應用程式可以包含多種內容型別, 因此我們可以在釋出描述符中為每一種型別指定MIME 型別。
• 安全性 我們可以使用釋出描述符來管理應用程式的訪問控制。例如, 可以指定我們的Web 應用程式是否需要登入, 如果需要的話, 應該使用什麼登入頁面, 以及使用者會作為何種角色。釋出描述符還可以用來自定義其他元素, 包括歡迎網頁, 出錯網頁, 會話配置。classes 目錄用於儲存編譯過的servlet 及其它程式類, 例如JavaBean。如果一個程式有打包的JAR 檔案(例如一個第三方API 打包成了一個JAR 檔案, 如Struts 框架的類庫