单体项目:目前的项目都是单体项目,一个项目的结构。
父子依赖项目:可以嵌套很多层的项目结构,(父亲-儿子-孙子-重孙子…|项目套项目|大项目套小项目|等)是必须要会的!后期用springcloud开发就要用父子依赖结构的项目。



引用兄弟项目:

两种拆分项目的方式:横向拆分(按照项目结构拆分)、纵向拆分(按照业务模块拆分)



首先创建maven父类项目(这里的父级项目为普通的jar项目,具体要根据需要而定!)




父级项目是用来用来组织子级项目。 不需要写代码。将项目目录下的src直接删掉!




dao被sevrice依赖,sevrice被web依赖。
三层结构,可分为三个子级项目,分别是dao、servlet、web。











父级的pom.xml:

dao子级的pom.xml:

service子级的pom.xml:

web子级的pom.xml:


①问题/解决:子级的jar包依赖要保持一致,统一交给父级进行引入(dependency/ies),便于管理。
②问题/解决:父级引用依赖之后,所有子级继承父级所有的jar包依赖。但是有些子级根本就不需要某些jar包依赖。这时需要将所有子级的jar包依赖统一由父级进行引入和管理(dependencyManagement)【不做实际引用,只做管理】,子级根据需要从父级那里进行引入。

pom.xml代码如下:
4.0.0
com.yzh7
maven_0811_parent
pom
1.0-SNAPSHOT
dao
service
web
3.1
4.0.1
2.2
1.2
4.1.6.RELEASE
1.4
1.8.6
3.4.6
1.3.3
1.2.9
8.0.11
2.5.0
1.3.1
javax.servlet
javax.servlet-api
${servlet-version}
provided
javax.servlet.jsp
jsp-api
${jsp-version}
provided
jstl
jstl
${jstl-version}
junit
junit
4.11
test
commons-dbcp
commons-dbcp
${commons-dbcp-version}
com.fasterxml.jackson.core
jackson-databind
${jackson-version}
mysql
mysql-connector-java
${mysql-connector-java-version}
点击刷新父级pom.xml文件及右侧工具栏。可以看出所有的子级继承了父级的jar包依赖!


为了避免有些子级引用父类中不需要的jar包依赖。jar包依赖由父类进行统一的引入和管理(dependencyManagement),由子级根据需要从父类那里引用!

修改后的pom.xml代码如下:
4.0.0
com.yzh7
maven_0811_parent
pom
1.0-SNAPSHOT
dao
service
web
3.1
4.0.1
2.2
1.2
4.1.6.RELEASE
1.4
1.8.6
3.4.6
1.3.3
1.2.9
8.0.11
2.5.0
1.3.1
javax.servlet
javax.servlet-api
${servlet-version}
provided
javax.servlet.jsp
jsp-api
${jsp-version}
provided
jstl
jstl
${jstl-version}
junit
junit
4.11
test
commons-dbcp
commons-dbcp
${commons-dbcp-version}
com.fasterxml.jackson.core
jackson-databind
${jackson-version}
mysql
mysql-connector-java
${mysql-connector-java-version}
然后进行刷新pom.xml:(可以看到父级子级都没有了dependencies)




补充:子级也可从父级引用jar包依赖,版本号由子级自己定义:

子级的版本号与父级不同。

编写代码:






刷新自己的pom.xml:

引用即可:










4.0.0
com.yzh7
maven_0811_parent
pom
1.0-SNAPSHOT
dao
service
web
3.1
4.0.1
2.2
1.2
4.1.6.RELEASE
1.4
1.8.6
3.4.6
1.3.3
1.2.9
8.0.11
2.5.0
1.3.1
javax.servlet
javax.servlet-api
${servlet-version}
provided
javax.servlet.jsp
jsp-api
${jsp-version}
provided
jstl
jstl
${jstl-version}
junit
junit
4.11
test
commons-dbcp
commons-dbcp
${commons-dbcp-version}
com.fasterxml.jackson.core
jackson-databind
${jackson-version}
mysql
mysql-connector-java
${mysql-connector-java-version}
package com.dao;
import com.util.BaseDAO;
import java.util.List;
import java.util.Map;
public class StudentDAOImpl {
//不标准的代码步骤
public Listpackage com.util;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BaseDAO {
//四大金刚
//驱动类
private static final String DRIVER="com.mysql.cj.jdbc.Driver";
//连接地址
private static final String URL="jdbc:mysql://localhost:3306/70806_db?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
//用户名
private static final String USER="root";
//密码
private static final String PASSWORD="123456";
//获取连接
public static Connection getConnection(){
Connection con = null;
try{
//加载驱动类
Class.forName(DRIVER);
//获取连接
con = DriverManager.getConnection(URL,USER,PASSWORD);
}catch(Exception ex){
ex.printStackTrace();
}
return con;
}
//关闭数据库对象
public static void closeAll(Connection con,Statement st,ResultSet rs){
if(rs!=null){
try{
rs.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
if(st!=null){
try{
st.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
if(con!=null){
try{
con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
//通用设置参数方法
public static void setParams(PreparedStatement pst,Object[] params){
if(params==null){
return;
}
for(int i=0;i> executeQuery(String sql,Object[] params) {
List
maven_0811_parent
com.yzh7
1.0-SNAPSHOT
4.0.0
dao
8
8
mysql
mysql-connector-java
package com.service;
import com.dao.StudentDAOImpl;
import java.util.List;
import java.util.Map;
public class StudentServletImpl {
//private StudentDAOImpl
public List> listAll(){
return new StudentDAOImpl().listAll();
}
}
maven_0811_parent
com.yzh7
1.0-SNAPSHOT
4.0.0
service
8
8
com.yzh7
dao
1.0-SNAPSHOT
<%@ page import="com.service.StudentServletImpl" %><%--
Created by IntelliJ IDEA.
User: 33154
Date: 2022/8/14
Time: 19:34
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
out.print(new StudentServletImpl().listAll());
%>
maven_0811_parent
com.yzh7
1.0-SNAPSHOT
4.0.0
web
war
web Maven Webapp
http://www.example.com
UTF-8
1.8
1.8
javax.servlet
javax.servlet-api
provided
javax.servlet.jsp
jsp-api
provided
jstl
jstl
com.yzh7
service
1.0-SNAPSHOT
junit
junit
web
maven-clean-plugin
3.1.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.8.0
maven-surefire-plugin
2.22.1
maven-war-plugin
3.2.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2