zoukankan      html  css  js  c++  java
  • 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
    

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

    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

  • 相关阅读:
    使用MobaXterm远程连接Ubuntu,启动Octave,界面不能正常显示
    ABP .Net Core 日志组件集成使用NLog
    ABP .Net Core Entity Framework迁移使用MySql数据库
    ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
    阿里云 Angular 2 UI框架 NG-ZORRO介绍
    Visual Studio 2019 Window Form 本地打包发布猫腻
    VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用
    ABP .Net Core 调用异步方法抛异常A second operation started on this context before a previous asynchronous operation completed
    ABP .Net Core To Json序列化配置
    .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
  • 原文地址:https://www.cnblogs.com/amiko/p/7906215.html
Copyright © 2011-2022 走看看