按照
Java EE 规范的规定,一个典型的 Web 应用程序有四个部分: 1. 公开目录 ; 2. WEB-INF/web.xml 文件,发布描述符(必选) ; 3. WEB-INF/classes 目录,编译后的 Java类文件(可选) ; 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应用程序中的硬性编写的代码的初始化值更少。 例如常见的 , 标记, 就能够为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 框架的类库 struts.jar, MySQL 的数据库 JDBC 驱动程序文件 mysql-connector-java-3.1.11- bin.jar 等), 那么它们能够被复制到lib目录中(若是解压缩这些压缩包的话, 请将它们复制到classes目录中)。 Web 容器使用这两个目录来查找 servlet 及其余相关类, 也就是说, 容器的类装入器会自动查看 classes 目录, 以及 lib目录下的 JAR文件。 这就意味着你不须要明确的把这些类和 JAR文件添加到 CLASSPATH中。 Web容器自动将这两个目录中的文件加入 Web应用的类路径中。