代码改变世界

Java Web应用程序的规范目录结构

2013-10-12 17:52  whiskyS-our  阅读(5076)  评论(0编辑  收藏  举报

Java Web应用程序的规范目录结构
 
一、  Java Web应用程序必须使用规范的目录结构:
 
–        应用程序根目录
 
–            |-- WEB-INF目录:必须目录
 
–                  |-- web.xml:Web应用部署描述文件,必须目录
 
–                  |-- classes目录:存放字节码文件
 
–                  |-- lib目录:存放第三方类库文件
 
–                  |-- TLD文件:标签库描述文件
 
–            |-- 其他静态文件:HTML、CSS、JavaScript、图片等
 
二、  开发Java Web应用程序的大致流程
 
–        设计目录结构:根据具体业务需要,遵照规范的目录结构设计好Web应用程序的目录结构。
 
–        编写Web应用程序代码:编写业务逻辑所需的Java代码。
 
–        编写部署描述文件:把Servlet、初始化参数等定义到部署描述文件web.xml中。
 
–        编译代码:把编写好的Java源代码编译成字节码。
 
–        将Web应用程序打包:把整个Web应用程序打成War包,以方便部署。
 
–        部署Web应用程序:把打好的War包部署到Web服务器上。
 
–        执行Web应用程序:启动Web服务器,利用客户端浏览器进行访问测试。
 
注意:在具体的开发过程中,一般都会使用IDE工具,使用IDE工具进行Web应用程序开发时,只需要开发人员完成前三个步骤,其他步骤IDE工具可以自动完成。
 
三、Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java服务器中。
 
四、Java Servlet可以动态地扩展服务器的能力,并采用请求-响应模式提供Web服务。
 
五、Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。Servlet装入Web服务器并在Web服务器内执行。
 
六、Servlet是以Java技术为基础的服务器端应用程序组件,Servlet的客户端可以提出
 
七、请求并获得该请求的响应,它可以是任何Java程序、浏览器或任何设备。

当Web服务器接收到一个HTTP请求时,它会先判断请求内容——如果是静态网页数据,Web服务器将会自行处理,然后产生响应信息;如果牵涉到动态数据,Web服务器会将请求转交给Servlet容器。此时Servlet容器会找到对应的处理该请求的Servlet实例来处理,结果会送回Web服务器,再由Web服务器传回用户端。

 

--yourproject
    --src  
      --java   运行的java源代码
     --test   单元测试的源代码
     --configs  配置文件
    --lib  开发需要的lib(里面通常是运行时不需要的jar)
    --build.propertis   (ant的)
    --build.xml   (ant)
    --document   (项目的设计文档、数据库设计文档等)
    --WebRoot
      --WEB-INF  
        --classes  
        --lib      (运行时需要的jar,当然开发肯定也需要该lib)
        ---web.xml
     --dist  (打成jar、war的存放路径)
     --css    
     --js    
     --view  (模板文件 。jsp,mv)
     --images
 

注:按照 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 应用程序中的硬性编写的代码的初始化值更少。例如常见的<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应用的类路径中。