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工具可以自动完成。
--yourproject --src | |
开发阶段:实际目录如右图 src:存放包,源文件,配置文件 build:存放配置,包,字节码文件,都是src中编译过来的 webcontent 存放webinf metainf 客户访问文件 其他是配置说明文件 | |
开发后期:将工程导出为war文件,如右图是标准的web目录 应用程序根目录 |-- WEB-INF目录:必须目录 |-- web.xml:Web应用部署描述文件,必须目录 |-- classes目录:存放字节码文件 |-- lib目录:存放第三方类库文件 |-- TLD文件:标签库描述文件 |-- 其他静态文件:HTML、CSS、JavaScript、图片等 最后:将war文件复制粘贴到Tomcat中的webAPP目录下,将自动解压运行。 |
注:按照 Java EE规范的规定,一个典型的Web应用程序有四个部分:
1. 公开目录 //存放所有可以被用户的访问的资源, 包括 .html, .jsp, .gif, .jpg, .css, .js, .swf等
2. WEB-INF/web.xml 文件,发布描述符(必选)
3. WEB-INF/classes 目录,编译后的Java 类文件(可选)
4. WEB-INF/lib 目录,Java 类库文件(*.jar)(可选)
WEB-INF目录下的文件只供容器使用,里面包含不应该由客户直接下载的资源
WEB-INF 中包含着发布描述符,一个classes目录和一个lib目录,以及其它内容。发布描述符(deployment descriptors)是J2EE 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应用的类路径中。