胖蔡说技术
随便扯扯

Java Web工程目录结构

说明

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

Java web 结构

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

工程发布结构

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

-helloapp
 -index.html
 -othersDirs
  -*.html
  -*.css
  -*.png
  - ......
 -WEB-INF
  -web.xml
  -classes
   -pakageName
    -*.class
  -lib
  -otherConfigfile
 -META-INF
  -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的根目录下。用于配置工程的一些基本配置。如,访问控制配置、默认访问配置、过滤配置、时间监听等。其基本格式如下所示:


<!--web.xml对于大小写敏感 -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">

<display-name>helloapp</display-name>

<!--上下文传入键值对-->
<context-param>
    <param-name>key</param-name>
    <param-value>value</param-value>
</context-param>

<!--设置web-app默认主页 -->
  <welcome-file-list>  
        <welcome-file>login.html</welcome-file>  
        <welcome-file>index.htm</welcome-file>  
        <welcome-file>index.jsp</welcome-file>  
        <welcome-file>default.html</welcome-file>  
        <welcome-file>default.htm</welcome-file>  
        <welcome-file>default.jsp</welcome-file>  
    </welcome-file-list>

<!--创建servlet对象-->
<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>mypack.DispatcherServlet</servlet-class>
</servlet>


<!--提供servlet对象指向-->
<servlet-mapping>
   <servlet-name>dispatcher</servlet-name>
   <url-pattern>/dispatcher</url-pattern>
</servlet-mapping>
</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默认动态结构如下所示:

helloapp
-src
 -packageName
  -*.java
-WebContent
  -META-INF
   -MANIFEST.MF
  -WEB-INF
   -web.xml
   -lib
    -*.jar

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

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

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

  1. Maven工程结构

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

helloapp
-src
 -main
  -java
   -pacakgename
    -*.class
  -resources
   -configfile
  -webapp
   -index.html
   -login.jsp
   -othersFolders
   -WEB-INF
    -web.xml
-target
 -generated-files
-pom.xml

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

sourceDeploy Path
src/main/javaWEB-INF/classes
src/main/resourcesWEB-INF/classes
src/main/webapp/
src/main/webapp/WEB-INF/WEB-INFWEB-INF/web.xml
maven DependenciesWEB-INF/lib

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

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » Java Web工程目录结构
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏