Java EE 中的 Web项目结构

按照JavaEE规范的规定,一个典型的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目录,以及其它内容。

发布描述符(deploymentdescriptors)是J2EEWeb应用程序不可分割的一部分(也就是说是它的最小部分,必不可缺的一部分)。它们在应用程序发布之后帮助管理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框架的类库struts.jar,MySQL的数据库JDBC驱动程序文件mysql-connector-java-3.1.11-bin.jar等),那么它们可以被复制到lib目录中(如果解压缩这些压缩包的话,请将它们复制到classes目录中)。Web容器使用这两个目录来查找servlet及其他相关类,也就是说,容器的类装入器会自动查看classes目录,以及lib目录下的JAR文件。这就意味着你不需要明确的把这些类和JAR文件添加到CLASSPATH中。Web容器自动将这两个目录中的文件加入Web应用的类路径中。

相关推荐