Java WEB 项目架构

来源:互联网 发布:apache是什么网络模型 编辑:程序博客网 时间:2024/04/28 11:56

按照 Java EE 规范的规定,一个典型的Web 应用程序有四个部分:
1. 公开目录
2. WEB-INF/web.xml 文件,发布描述符(必选)
3. WEB-INF/classes 目录,编译后的Java 类文件(可选)
4. WEB-INF/lib 目录,Java 类库文件(*.jar)(可选)

Java  WEB 项目架构 - 登上浪头摘月亮 - 在黑夜中,我孤独的前行

公开目录存放所有可以被用户的访问的资源, 包括 .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 目录下。
发布描述符有多种用途:
1.为 Servlet 和Web 应用程序提供初始化参数 这使我们的Web 应用程序中的硬性编写
的代码的初始化值更少。例如常见的 <param-name>, <param-value>标记, 就可以为
Servlet 提供参数, 这个参数可以在init() 方法中加载。 Struts 的ActionServlet 也是通
过这种方式来找到它们需要的配置文件struts-config.xml 的位置, 从而加载并分析它,
来初始化Struts 框架用到的各种FromBean, Action, Forward 等。
2.Servlet/JSP 定义可以为 Web 应用程序中的每个Servlet 或者预编译的JSP 网页提供
定义。包括 Servlet/JSP 的名字, Servlet/JSP 的类以及一个可选的描述。Servlet/JSP 映射 Web 容器使用这些信息把进入请求映射到servlet 和JSP 网页。
3.MIME 类型由于每个 Web 应用程序可以包含多种内容类型, 因此我们可以在发布描
述符中为每一种类型指定MIME 类型。
4.安全性 我们可以使用发布描述符来管理应用程序的访问控制。例如, 可以指定
我们的Web 应用程序是否需要登录, 如果需要的话, 应该使用什么登录页面, 以及用户
会作为何种角色。
5.发布描述符还可以用来自定义其他元素, 包括欢迎网页, 出错网页, 会话配置。
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
应用的类路径中。

原创粉丝点击