在平時的Java web項目開發(fā)中為了便于后期的維護(hù),我們一般會進(jìn)行分模塊開發(fā)叉瘩,每個模塊都對應(yīng)著一個pom.xml膳帕。它們之間通過繼承和聚合相互關(guān)聯(lián)。這樣各層之間的職責(zé)會比較明確房揭,也方便后期的維護(hù)备闲。
今天我們是使用 Maven 來構(gòu)建以上的各個層。
文字內(nèi)容只涉及工程搭建的基本流程捅暴,請主要參照文章末尾的源代碼恬砂。
項目目錄:
mavenweb-parent
|----pom.xml
mavenweb-service
|----pom.xml
mavenweb-web
|----pom.xml
創(chuàng)建主模塊:mavenweb-parent
- 在 Eclipse 中新建工程:
New -> Other -> Maven Project -> 填寫配置信息 -> Finish
- 在 Eclipse 中,設(shè)置 目標(biāo)JDK 版本:
在工程中蓬痒,點擊右鍵 -> Build Path -> Configure Build Path -> Java Build Path -> 在 Libraries 選項卡中選擇 JDK1.7 或以上版本
-
在硬盤上泻骤,刪除 src 文件夾;并在 Eclpse 中刷新該工程梧奢。
Mavenweb Parent Delete Folders.png 設(shè)置 pom 文件:
務(wù)必設(shè)置 packaging 為 pom
<project ...>
...
<packaging>pom</packaging>
<properties>
<springversion>3.1.1.RELEASE</springversion>
<junitversion>4.10</junitversion>
</properties>
<dependencyManagement>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junitversion}</version>
<scope>test</scope>
</dependency>
...
</dependencyManagement>
</project>
創(chuàng)建子模塊:mavenweb-server
- 使用類似的方式創(chuàng)建 maven 工程
- 修改 pom:
設(shè)置 packaging 為 jar狱掂,并添加 parent 與 dependencies 節(jié)點。
<project>
...
<packaging>jar</packaging>
<parent>
...
<relativePath>../mavenweb-parent/pom.xml</relativePath>
</parent>
...
</project>
- 添加 spring 配置
設(shè)置 component-scan 以便令代碼中注解能被讀取與解析亲轨,并使用 propertyConfigurer 讀取配置文件趋惨。
<beans>
<!-- 掃描包 -->
<context:component-scan base-package="com.stevexie" />
<bean id="propertyConfigurer" >
<property name="location">
<value>file:/.../configInfo.properties</value>
</property>
</bean>
<!-- 這個包負(fù)責(zé)讀取配置文件信息 -->
<!-- 若使用注解初始化這個類,編譯后的 jar 包無法正確地讀取配置惦蚊,原因未知 -->
<!-- 所以僅這個類實例需要在 xml 中定義 -->
<bean id="configInfo" class="com.stevexie.util.ConfigInfo">
<property name="name" value="${prop.name}"></property>
</bean>
</beans>
創(chuàng)建子模塊:mavenweb-client
- 首先器虾,同樣使用類似的方式創(chuàng)建 maven 工程,但與 Server 工程相比多了以下幾部
- 轉(zhuǎn)換項目類型
項目右鍵 -> properties -> Project Facets -> 勾選 Dynamic Web Module 和 Java -> OK
-
修正編譯設(shè)置與輸出目錄
項目右鍵 -> properties -> Deployment Assembly蹦锋,如下圖設(shè)置:
Mavenweb Client Deployment Assembly Setting.png 設(shè)置 JDK 1.8
設(shè)置 web.xml
因為我們的 url 會使用 restful 風(fēng)格兆沙,所以需要改變兩個文件:1) 在web.xml中,修改 servlet-mapping莉掂;2) 在client-spring-mvc.xml中葛圃,添加 <mvc:default-servlet-handler />
web.xml:
<web-app >
...
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<!-- 使用 resful 風(fēng)格的 url 前 -->
<!-- <url-pattern>/</url-pattern> -->
<!-- 使用 resful 風(fēng)格的 url 后 -->
<url-pattern>/login</url-pattern>
</servlet-mapping>
...
</web-app>
client-spring-mvc.xml:
<beans ">
...
<mvc:default-servlet-handler />
<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven />
...
</beans>
項目 mavenweb-client 中的表單驗證:
- pom.xml 中添加 hibernate-validator.jar
<!-- spring mvc validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.1.Final</version>
</dependency>
- 在 UserVo.java 中添加驗證條件
@NotEmpty(message = "用戶名不能為空")
private String name;
@Size(min=6 ,max= 20 ,message = "密碼長度不符合標(biāo)準(zhǔn)")
private String pwd;
- 修正 Controller
public class UserController {
@RequestMapping(value="/login", method = {RequestMethod.GET})
public String test(Model model) {
if(!model.containsAttribute("userVo")){
model.addAttribute("userVo", new UserVo());
}
return "login";
}
@RequestMapping(value="/login", method = {RequestMethod.POST})
public ModelAndView test(ModelMap model, @Valid @ModelAttribute("userVo") UserVo userVo, BindingResult result)
throws NoSuchAlgorithmException {
MsgVo msgVo = new MsgVo();
msgVo.setMsg("Hi " + userVo.getName() + ", " + helloService.sayHello());
if (result.hasErrors()) {
return new ModelAndView("/login", null);
}
model.addAttribute("msgVo", msgVo);
return new ModelAndView("/login_success", model);
}
}
再次配置 mavenweb-parent 項目
在 pom 文件中,添加兩個子模塊:
<modules>
<module>../mavenweb-client</module>
<module>../mavenweb-server</module>
</modules>
至此憎妙,工程基本設(shè)置完畢了库正。
編譯
使用命令行:
cd ../mavenweb-proj/
mvn clean install -DskipTests=true
運行
可以使用命令把 war 包發(fā)布到 tomcat 中,并啟動 tomcat 服務(wù)厘唾;或直接在 Eclipse 中運行诀诊。
為節(jié)省篇幅,這里只介紹后者阅嘶;命令行的啟動則會放到下一篇博文中討論,
在 Eclipse 中運行:
- 編譯后,刷新 Eclipse 工程
- 右鍵點擊工程 -> Run as -> Run on Server -> 選擇 Tomcat 9.0(注意 Tomcat 與 JDK 的兼容性問題)
- 瀏覽器中輸入:http://localhost:8080/mavenweb-client/
完整源碼下載:
請移步到百度網(wǎng)盤下載源碼讯柔,并導(dǎo)入到 Eclipse 中抡蛙。下載地址:
https://pan.baidu.com/s/1pLo0Ynx
下一篇預(yù)告
在本文基礎(chǔ)上,添加并完善一些 web 項目的基本功能魂迄,包括:
- 完善 Login 頁面粗截,添加 css 與 js 事件。
- 添加日志功能及 hibernate 模塊捣炬。
P.S. 如有介紹不準(zhǔn)確之處或者在運行源代碼遇到問題熊昌,請在請留下您評論留言。您的鼓勵永遠(yuǎn)是我前進(jìn)的動力湿酸。
參考資料
- 如何使用 Maven:
http://www.cnblogs.com/leiOOlei/p/3359561.html - 如何搭建 Maven Web 工程:
http://www.cnblogs.com/leiOOlei/p/3361633.html - Maven 依賴管理詳解:
http://blog.csdn.net/liutengteng130/article/details/46991829 - Spring MVC 表單驗證詳解:
http://blog.csdn.net/miketom155/article/details/45058195