在平时的Java web项目开发中为了便于后期的维护,我们一般会进行分模块开发,每个模块都对应着一个pom.xml。它们之间通过继承和聚合相互关联。这样各层之间的职责会比较明确,也方便后期的维护。
今天我们是使用 Maven 来构建以上的各个层。
文字内容只涉及工程搭建的基本流程,请主要参照文章末尾的源代码。
项目目录:
mavenweb-parent
|----pom.xml
mavenweb-service
|----pom.xml
mavenweb-web
|----pom.xml
创建主模块:mavenweb-parent
- 在 Eclipse 中新建工程:
New -> Other -> Maven Project -> 填写配置信息 -> Finish
- 在 Eclipse 中,设置 目标JDK 版本:
在工程中,点击右键 -> Build Path -> Configure Build Path -> Java Build Path -> 在 Libraries 选项卡中选择 JDK1.7 或以上版本
-
在硬盘上,删除 src 文件夹;并在 Eclpse 中刷新该工程。
设置 pom 文件:
务必设置 packaging 为 pom
...
pom
3.1.1.RELEASE
4.10
junit
junit
${junitversion}
test
...
创建子模块:mavenweb-server
- 使用类似的方式创建 maven 工程
- 修改 pom:
设置 packaging 为 jar,并添加 parent 与 dependencies 节点。
...
jar
...
../mavenweb-parent/pom.xml
...
- 添加 spring 配置
设置 component-scan 以便令代码中注解能被读取与解析,并使用 propertyConfigurer 读取配置文件。
file:/.../configInfo.properties
创建子模块:mavenweb-client
- 首先,同样使用类似的方式创建 maven 工程,但与 Server 工程相比多了以下几部
- 转换项目类型
项目右键 -> properties -> Project Facets -> 勾选 Dynamic Web Module 和 Java -> OK
-
修正编译设置与输出目录
项目右键 -> properties -> Deployment Assembly,如下图设置:
设置 JDK 1.8
设置 web.xml
因为我们的 url 会使用 restful 风格,所以需要改变两个文件:1) 在web.xml中,修改 servlet-mapping;2) 在client-spring-mvc.xml中,添加
web.xml:
...
appServlet
/login
...
client-spring-mvc.xml:
...
...
项目 mavenweb-client 中的表单验证:
- pom.xml 中添加 hibernate-validator.jar
org.hibernate
hibernate-validator
4.3.1.Final
- 在 UserVo.java 中添加验证条件
@NotEmpty(message = "用户名不能为空")
private String name;
@Size(min=6 ,max= 20 ,message = "密码长度不符合标准")
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 文件中,添加两个子模块:
../mavenweb-client
../mavenweb-server
至此,工程基本设置完毕了。
编译
使用命令行:
cd ../mavenweb-proj/
mvn clean install -DskipTests=true
运行
可以使用命令把 war 包发布到 tomcat 中,并启动 tomcat 服务;或直接在 Eclipse 中运行。
为节省篇幅,这里只介绍后者;命令行的启动则会放到下一篇博文中讨论,
在 Eclipse 中运行:
- 编译后,刷新 Eclipse 工程
- 右键点击工程 -> Run as -> Run on Server -> 选择 Tomcat 9.0(注意 Tomcat 与 JDK 的兼容性问题)
- 浏览器中输入:http://localhost:8080/mavenweb-client/
完整源码下载:
请移步到百度网盘下载源码,并导入到 Eclipse 中。下载地址:
https://pan.baidu.com/s/1pLo0Ynx
下一篇预告
在本文基础上,添加并完善一些 web 项目的基本功能,包括:
- 完善 Login 页面,添加 css 与 js 事件。
- 添加日志功能及 hibernate 模块。
P.S. 如有介绍不准确之处或者在运行源代码遇到问题,请在请留下您评论留言。您的鼓励永远是我前进的动力。
参考资料
- 如何使用 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