通過前面一系列學習,差很少對Java的開發過程有了必定的瞭解,爲了能保持一個良好的項目結構,考慮到接下來要進行開發,還須要學習一下Java的項目結構css
下面以兩個項目結構爲參照html
圖1java
圖2web
第一個是我本身學習時的Demo,一邊學一邊建文件,應該有些錯誤的地方,第二張是從網上看到的一個結構比較清晰的圖片spring
圖1的結構完整一點,就以圖1爲主一點點講起數據庫
由於我用的是Maven,大方向上項目兩大文件夾分別是src和target,以及一個pom.xml配置文件,src目錄裏是項目工程的源碼文件,配置文件和資源文件等,其下一級是main和test這兩個文件夾segmentfault
main文件夾下是主要的工程源文件,而後下面又是兩個文件夾:java和resources,其實上面也講了,並且顧名思義,java裏面是源碼文件,resources裏面是資源文件網絡
這之下的文件結構能夠參考上面的圖2了,大致上就是model-mapper-service-controller,其餘還有公共類和表現層等,這裏在下面單獨分一個章節來講mybatis
資源文件夾默認就是這個樣子,application.properties是用來填寫各類配置的,好比數據庫鏈接的配置信息、日誌組件的配置信息等,有些人會改爲yml後綴名,裏面的格式就不盡相同了,在前面也講過,這裏就再也不贅述。app
除此以外,各類組件的配置文件也在這個文件夾下
還有一個主要的做用是存放靜態文件資源,包括須要訪問的jsp、html、css、js、圖片等,還有代碼模板
——用於存放html、css、js、圖片等資源
——用於存放jsp、thymeleaf等模板文件
如題所述,單元測試用的
target是有存放項目構建後的文件和目錄,jar包、war包、編譯的class文件等
target裏的全部內容都是maven構建的時候生成的
jar 包就是 java archive file java 的一種文檔格式。jar文件很是相似zip
WAR是Sun提出的一種Web應用程序格式,與JAR相似,也是許多文件的一個壓縮包。這個包中的文件按必定目錄結構來組織:
一般其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。一般在WEB-INF目錄下有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。
一般這些所依賴的類也能夠打包成JAR放到WEB-INF下的lib目錄下,固然也能夠放到系統的CLASSPATH中,但那樣移植和管理起來不方便
target裏的全部內容都是maven構建的時候生成的
傳統的三層不用再解釋了,在Java裏對應數據訪問層的是DAO,進行數據交互,對應業務邏輯層的是Service層,這裏寫邏輯代碼,而後就是UI層
上面提到DAO,這裏簡單說說一些相關的簡寫,在一些源碼裏看到了,初學時有點懵
DTO的用法:
好比咱們一張表有100個字段,那麼對應的PO就有100個屬性。可是咱們界面上只要顯示10個字段,客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,這時咱們就能夠用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端之後,若是用這個對象來對應界面顯示,那此時它的身份就轉爲VO。DTO還有減小請求的次數、簡化傳輸對象、避免代碼重複等做用。
能夠參考圖2
我在不少地方都看到了一個ServiceImpl接口,一個service類的寫法,一直不理解爲何要屢次一舉,但仍是照着作了,上面那篇文章裏說到這是一種過期的寫法,使用接口文件是爲了解決可能鏈接各類數據庫而有多個數據訪問層的問題,這樣只須要實現對應的結構就好了,而有了Mybatis以後這種問題就不存在了,因此不須要再寫impl接口文件,使用 service+dao+mapper.xml 是一種更好的選擇
還能夠看看這篇spring boot 項目開發經常使用目錄結構