作业提交系统2.0(marven项目、project/module模式、数据库连接池)
Maven
Apache Maven是一个软件项目管理和依赖管理工具。基于项目对象模型(POM)的概念,Maven可以通过资源仓库管理项目的构建,报告和文件。
Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置
以下步骤形成maven项目
(1)令Maven使用阿里云国内镜像修改maven根目录下的conf文件夹下setting.xml文件,打开后找到mirror出,黏贴以下代码
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
(2)new --> project

使用project/module模式
在 IntelliJ IDEA 中,没有类似于 Eclipse 工作空间(Workspace)的概念,而是提出了Project和Module这两个概念。在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的。
当为单Module项目的时候,这个单独的Module实际上就是一个Project;
当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系。
以下步骤建立一个project/module的maven项目
(1)File --> New --> Module --> Maven --> next --> 选择父类为之前建立的工程名,ArtifactId设为该子工程的名

(2)在pom.xml中添加依赖
- 在子工程JavaEE-01中添加以下依赖
<dependencies>
<!-- <dependency>
<groupId>org.example</groupId>
<artifactId>db</artifactId>
</dependency>-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>13</source>
<target>13</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>- 在父类工程中添加以下依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
</dependencies>
</dependencyManagement>(3)将之前项目中代码导入新项目
(4)配置project struture
点击右侧栏中的“Project”,修改最底下的地址为父类项目的/target

点击右侧栏中的“Modules”,右键子类项目,点击添加“web”,查看下图红框中的两个地址是否正确

点击右侧栏中的“Artifacts”,添加两个artifacts,如下图所示


(4)Add Configuration,配置Tomcat,配置完成运行项目即可
(5)完成!
数据库连接池
(1)在pom.xml中添加依赖
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.2</version>
</dependency>(2)在jdbc包中建立新的类DatabasePool
package org.example.javaee.class01.jdbc;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
public class DatabasePool {
private static HikariDataSource hikariDataSource;
public static HikariDataSource getHikariDataSource(){
if(null!=hikariDataSource){
return hikariDataSource;
}
synchronized (DatabasePool.class){
if(null==hikariDataSource){
String jdbcUrl="jdbc:mysql://127.0.0.1:3306/j1?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT";
String driverName = "com.mysql.cj.jdbc.Driver";
HikariConfig hikariConfig=new HikariConfig();
hikariConfig.setUsername("root");
hikariConfig.setPassword("123456");
hikariConfig.setDriverClassName(driverName);
hikariConfig.setJdbcUrl(jdbcUrl);
hikariDataSource=new HikariDataSource(hikariConfig);
return hikariDataSource;
}
}
return null;
}
public static void main(String[] args) throws InterruptedException {
while(true){
getHikariDataSource();
Thread.sleep(3000);
}
}
}
(3)可以将之前jdbc中写url和driver的地方删除,换成以下
- 以前
try(Connection connection = DriverManager.getConnection(url, "root","123456");- 改为
Connection connection = DatabasePool.getHikariDataSource().getConnection()(4)配置project structure
- 打开project structure --> Artifacts --> 点击web application:exploded那个artifact
- 点击WEB-INF目录底下的lib
- 右键点击add library files,将出现的所有files添加到lib中
- 确认退出,运行项目
- 成功~

改造后的项目github地址
https://github.com/zhangzhangzhang0/javaee01