[轉]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-appxmlns: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


---------------------
作者:amiko
來源:CNBLOGS
原文:https://www.cnblogs.com/amiko/p/7906215.html
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM