说明

介绍java web 工程的基本结构目录。记录java web 工程结构的学习。

Java web 结构

java web严格来说分为两类工程结构:一个是工程编译目录结构,一个是工程发布目录结构。工程发布目录结构结构,为servlet容器加载web应用的统一标准目录,而工程编译目录结构是为了方便工程编写、修改的临时结构,需要通过工程构建工具(ant,maven,gradle等)编译生成最终的运行时发布结构。因此,工程编译目录结构并不统一,与所使用的编译工具有关(也和配置有关)。

工程发布结构

这个也是最终的工程目录结构,结构示意如下:

  1. -helloapp
  2. -index.html
  3. -othersDirs
  4. -*.html
  5. -*.css
  6. -*.png
  7. - ......
  8. -WEB-INF
  9. -web.xml
  10. -classes
  11. -pakageName
  12. -*.class
  13. -lib
  14. -otherConfigfile
  15. -META-INF
  16. -MANIFEST.MF

如上,一般可以将其分为以下几个部分内容:

  • 静态文件资源

静态文件资源包括需要访问的jsp、html、css、js、png、ico、gif、conf配置文件等,可以将其放在任意位置,一般默认是防止主目录下,访问后缀路径为文件相对主目录路径。如上,index.html的相对访问路径为:/index.html ,绝对访问路径为: http://domain:port/helloapp/index.html .

  • 工程配置文件(部署描述符文件)

即是java web 项目最主要的构成部分之一:web.xml.其对应位置如上放在WEB-INF的根目录下。用于配置工程的一些基本配置。如,访问控制配置、默认访问配置、过滤配置、时间监听等。其基本格式如下所示:


  1. <!--web.xml对于大小写敏感 -->
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns="http://java.sun.com/xml/ns/javaee"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  6. id="WebApp_ID" version="3.0">
  7. <display-name>helloapp</display-name>
  8. <!--上下文传入键值对-->
  9. <context-param>
  10. <param-name>key</param-name>
  11. <param-value>value</param-value>
  12. </context-param>
  13. <!--设置web-app默认主页 -->
  14. <welcome-file-list>
  15. <welcome-file>login.html</welcome-file>
  16. <welcome-file>index.htm</welcome-file>
  17. <welcome-file>index.jsp</welcome-file>
  18. <welcome-file>default.html</welcome-file>
  19. <welcome-file>default.htm</welcome-file>
  20. <welcome-file>default.jsp</welcome-file>
  21. </welcome-file-list>
  22. <!--创建servlet对象-->
  23. <servlet>
  24. <servlet-name>dispatcher</servlet-name>
  25. <servlet-class>mypack.DispatcherServlet</servlet-class>
  26. </servlet>
  27. <!--提供servlet对象指向-->
  28. <servlet-mapping>
  29. <servlet-name>dispatcher</servlet-name>
  30. <url-pattern>/dispatcher</url-pattern>
  31. </servlet-mapping>
  32. </web-app>
  • 依赖,可执行文件

这是java web 应用的核心部分了,主要用于实现web 应用的动态创建逻辑、动态响应的功能,为java的具体实现部分,主要分成两个部分分布:一个是WEB-INF/lib/*.jar,为当前应用需要使用的依赖jar包,另一个为WEB-INF/classes/…/*.class文件,为web工程编译生成的class文件,查找顺序为先查找lib目录下的*.jar文件,然后查找classes/…/*.class文件.

  • web 版本信息等

这个是生成发布版本时根据配置自动生成的配置信息,再META-INF/MANIFEST.MF.

工程编译目录结构

这里主要介绍两种目录结构:一个是eclipse默认创建的动态web应用结构,一个是maven构建的工程目录结构。

  1. Dynamic Web Project结构

eclipse默认动态结构如下所示:

  1. helloapp
  2. -src
  3. -packageName
  4. -*.java
  5. -WebContent
  6. -META-INF
  7. -MANIFEST.MF
  8. -WEB-INF
  9. -web.xml
  10. -lib
  11. -*.jar

如上,主要分为两个部分:src对应的具体java逻辑实现部分;WebContent对应依赖、工程配置、静态文件部分,默认WebContent根目录对应于发布工程根目录,具体的目录结构对应关系可以通过:

  1. projectName(右键) ——>Properties——>DeployMent Assembly

查看,也可以在此自定义修改对应关系(需谨慎).

  1. Maven工程结构

maven结构比较方便web应用的构建,对于依赖、配置等比较方便。如下,为其基本的工程结构:

  1. helloapp
  2. -src
  3. -main
  4. -java
  5. -pacakgename
  6. -*.class
  7. -resources
  8. -configfile
  9. -webapp
  10. -index.html
  11. -login.jsp
  12. -othersFolders
  13. -WEB-INF
  14. -web.xml
  15. -target
  16. -generated-files
  17. -pom.xml

其默认部署对应关系如下:

source Deploy Path
src/main/java WEB-INF/classes
src/main/resources WEB-INF/classes
src/main/webapp /
src/main/webapp/WEB-INF/WEB-INF WEB-INF/web.xml
maven Dependencies WEB-INF/lib

其中pom.xml主要是用来配置工程依赖和编译、发布等版本的控制的。

Enjoytoday,EnjoyCoding

Java Web工程目录结构的更多相关文章

  1. [转]Java Web工程目录结构

    说明 介绍java web 工程的基本结构目录.记录java web 工程结构的学习. Java web 结构 java web严格来说分为两类工程结构:一个是工程编译目录结构,一个是工程发布目录结构 ...

  2. JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别

    本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...

  3. web工程目录结构

    /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/包含了站点所有用的 class 文件,包括 ser ...

  4. 新建Eclipse的web工程目录结构和MyEclipse相似的设置

    新建一个文件名为“org.eclipse.wst.web.prefs”的文件 里面设置的内容如下: “webContent=webRoot%proj%\bin= %webRoot%\WEB-INF\c ...

  5. Java Web 项目目录结构

    为了使 Web 容器顺利地执行 Web 应用,开发者需要以一种标准的方式将 Web 项目中的资源(Servlets.JSP 等)打包.一个 Web 项目的目录结构可分为两种: 发布目录结构 Web 容 ...

  6. JavaWeb工程 目录结构***

    以下是mavaen推荐的项目目录. ├── pom.xml └── src     ├── main     │   ├── java     │   │   └── group     │   │  ...

  7. java web工程web.xml介绍

    转载自:http://blog.csdn.net/believejava/article/details/43229361 Web.xml详解: 1.web.xml加载过程(步骤) 首先简单讲一下,w ...

  8. java web工程的配置文件

    java web工程的配置文件 1.工程(源码依赖管理) 2.代码生成管理: 3.会话管理:servlet: 4.应用管理: 5.(分布式)资源管理:数据.数据库连接等. pom:源码管理工具 位置: ...

  9. [转]JavaWeb工程 目录结构

    今天为此事纠结了一段时间. 以下是mavaen推荐的项目目录. ├── pom.xml └── src     ├── main     │   ├── java     │   │   └── my ...

随机推荐

  1. Cesium 本地部署案例

    众所周知,cesium的服务器是搭建在国外的,所以我们国内的用户访问的时候贼慢.有时想查个api或者看个案例半天都进不去,今天我来说一下傻瓜式搭建本地的cesium环境,用于大家没事查资料用!步骤:1 ...

  2. iOS核心动画高级技巧-5

    9. 图层时间 图层时间 时间和空间最大的区别在于,时间不能被复用 -- 弗斯特梅里克 在上面两章中,我们探讨了可以用CAAnimation和它的子类实现的多种图层动画.动画的发生是需要持续一段时间的 ...

  3. 面试连环炮系列(十二):说说Atomiclnteger的使用场景

    说说Atomiclnteger的使用场景 AtomicInteger提供原子操作来进行Integer的使用,适合并发情况下的使用,比如两个线程对同一个整数累加. 为什么Atomiclnteger是线程 ...

  4. 本地的个人web网站上线的全过程,供大家参考(PHP,简易的LAMP环境搭建)

    一 : 你需要准备的东西 1.本地能访问的网站,最好是改过host文件和apache的httpd-vhosts.conf,配置过本地域名的那种(减少传到线上出现的问题,文件路径不对呀啥的) 2.一个云 ...

  5. Dynamic Code Evaluation:Unsafe Deserialization 动态代码评估:不安全反序列化

  6. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(1)- Boot简介

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的BootROM功能简介. 截止目前为止i.MX RTyyyy系列已公布的芯片有三款i.MXRT ...

  7. Mvc导入

    [HttpPost] public void Import() { //获取文件 HttpPostedFileBase fileBase = Request.Files["file" ...

  8. 高强度学习训练第六天总结:Redis主从关系总结

    Redis主从复制机制 1.读写分离的好处 性能优化:主服务器专注于写操作,可以更适合写入数据的模式工作:同样,从服务器专注于读操作,可以用更适合读取数据的模式工作. 强化数据安全,避免单点故障:由于 ...

  9. jQuery随笔记录

            DOM遍历 parent()方法返回所选元素的直接父元素.(parent() 只能遍历单个级别的 DOM树) parents()方法获取所选元素的所有祖先 children()所选元素 ...

  10. vue中计算属性的get与set方法

    计算属性get set方法 在vue的计算属性中,所定义的都是属性,可以直接调用 正常情况下,计算属性中的每一个属性对应的都是一个对象,对象中包括了set方法与get方法 computed:{ ful ...