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

發佈了52 篇原創文章 · 獲贊 43 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章