說明
介紹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構建的工程目錄結構。
- 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
查看,也可以在此自定義修改對應關系(需謹慎).
- 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主要是用來配置工程依賴和編譯、發布等版本的控制的。
---------------------
作者:amiko
來源:CNBLOGS
原文:https://www.cnblogs.com/amiko/p/7906215.html
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件