多模块开发
通常项目中,需要把项目分层。通常分为po(模型层)、dao(数据访问层)、service(业务逻辑层)、web(表现层)。以前分层通过package来实现的。
在maven中通过模块来进行划分的。
Maven项目模块结构:
Parent – 父项目
Pom.xml
Po – 实体类
Pom.xml
Dao – 数据访问
Pom.xml
Service – 业务逻辑
Pom.xml
Web – 视图
Pom.xml
需要为上述的每个模块创建一个单独的模型项目。在maven中通过maven的依赖关系来建立各个模块之间的联系。
注意:
Po、dao、service、web模块都必须去继承parent。
Parent模块打包类型必须是pom
Web模块打包类型必须是war
Po、dao、service模块打包类型必须是jar
模块依赖关系
(1) web -- > po、service
(2) service -- > po、dao
(3) dao -- > po
依赖的传递性
Dao模块依赖po、service依赖dao、那么service自动依赖于po
步骤
创建parent父项目
po模块
Dao、service和po一样的
web模块
设置依赖关系
(1) web -- > po、service
(2) service -- > po、dao
(3) dao -- > po
1)dao模块的pom.xml中添加po的依赖
<dependencies> <!-- 依赖po模块 --> <dependency> <groupId>com.yujun.maven</groupId> <artifactId>maven-module-po</artifactId> <version>1.0</version> </dependency> </dependencies>
2)service模块的pom.xml中添加dao的依赖
<dependencies> <!-- 依赖dao层 --> <dependency> <groupId>com.yujun.maven</groupId> <artifactId>maven-module-dao</artifactId> <version>1.0</version> </dependency> </dependencies>
3)web模块的pom.xml中配置service的依赖
<dependencies> <dependency> <groupId>com.yujun.maven</groupId> <artifactId>maven-module-service</artifactId> <version>1.0</version> </dependency> </dependencies>
代码编写
po模块
1)User类
package com.maven.po; public class User { private String name; private String pwd; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { // TODO Auto-generated method stub return "User [name="+name+",pwd="+pwd+"]"; } }
dao模块
1)UserDao类
package com.maven.dao; import com.maven.po.User; public class UserDao { //查询一个用户 public User findUser() { User user = new User(); user.setName("小白"); user.setPwd("123456"); return user; } }
service模块
1)UserService类
package com.maven.service; import com.maven.dao.UserDao; import com.maven.po.User; public class UserService { private UserDao dao = new UserDao(); //调用dao获取用户信息 public User getUser(){ return dao.getUser(); } }
web模块
1)需要添加servlet-api和jsp-api的依赖
<!-- servlet-api依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- servlet.jsp-api依赖 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency>
2)UserServlet类
package com.maven.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.maven.po.User; import com.maven.service.UserService; public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); //调用service中的方法,获取用户 UserService userService = new UserService(); User user = userService.getUser(); System.out.println(user); request.setAttribute("user", user); request.getRequestDispatcher("user.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
3)运行
只需要把web模块项目添加到tomcat中启动即可访问。
打包
打包时,只需要在parent项目 -- > 右键 -- > run as -- > maven install
就可以在各个模块的target目录下生产各自的打包文件