Java Web工程目录结构

  在Sun的Java Servlet规范中,对Java Web应用做了这样的定义:“Java Web应用由一组Servlet、HTML页面、类,以及其他可以被绑定的资源构成。它可以在第三方供应商提供的实现Servlet规范的Web应用容器中运行。” Java Web应用的主要特征之一就是与ServletContext的关联。每个Web应用都有且只有一个ServletContext。当Java Web应用运行时,Servlet容器为每个Web应用创建唯一的ServletContext对象,使得它能被同一个Web应用中的所有组件共享。Servlet容器(例如Tomcat)控制这种关联,并且保证在ServletContext中存储对象时,不会发生冲突。  

  Java Web应用程序必须使用规范的目录结构:

  应用程序根目录

    -- WEB-INF目录:必须目录 WEB-INF是受保护文件夹,我们不能通过常规的方法(浏览器请求)来访问里面的资源。

      -- web.xml:Web应用部署描述文件,必须目录

      -- classes目录:存放字节码文件

      -- lib目录:存放第三方类库文件

    -- TLD文件:标签库描述文件

    -- 其他静态文件:HTML、CSS、JavaScript、图片等

实际项目开发中推荐的目录结构

--project
  --src
    --java 运行的java源代码
    --test 单元测试的源代码
    --configs 配置文件
  --WebRoot
    --WEB-INF
      --classes
      --lib (运行时需要的jar,当然开发肯定也需要该lib)
      --web.xml
  --css
  --js
  --images
  --jsp(view) (模板文件 。jsp,mv)

  --build.propertis (ant的)
  --build.xml (ant)
  --dist (打成jar、war的存放路径)

 关于jsp(view) 的放置路径,我们也可以将它放到WEB-INF目录下,但是这样就不能通过浏览器直接请求到jsp页面,必须经过服务器跳转,这样可以阻止用户下载到jsp页面,其实放在WebRoot 目录下,再加一个过滤器也可以有一样的效果。这个问题网上有很多讨论,我没找到正式的结论,基本上是习惯或者个人喜好的问题。

在classes以及lib子目录下,都可以存放Java类文件。在运行过程中,Tomcat的类装载器先装载classes目录下的类,再装载lib目录下的类。因此,如果两个目录下存在同名的类,classes目录下的类具有优先权。

web.xml文件

  Java Web应用通过一个基于XML的发布描述符文件来配置其发布信息,这个文件名为web.xml,它存放于WEB-INF子目录下。在web.xml文件中可包含如下配置信息:

  Servlet的定义

  Servlet的初始化参数

  Servlet以及JSP的映射

  安全域配置参数

  welcome文件清单

  资源引用

  环境变量的定义

(web.xml配置文件详解:http://blog.csdn.net/itmagic_jack/article/details/6293042 
http://www.cnblogs.com/nami/archive/2012/09/03/2669098.html )

( Web.xml 加载顺序: http://blog.csdn.net/xiongyayun428/article/details/6992995 )

posted on 2012-09-03 17:03  nami  阅读(3017)  评论(0编辑  收藏  举报