《使用Maven开发Web应用详细步骤》教程中介绍了怎样实现一个简单的 Web 应用,讲述了创建 Web 应用、编写代码、在 pom.xml 中配置相关的构件、最后发布测试,接下来再介绍一个经典的实现了 CRUD 的用户 Web 管理应用。
创建 Web 工程和初始化数据库
首先,按照教程前面的指导创建一个 Web 工程,创建好工程后,下一步就是初始化数据库了。
这里用的是 MySQL 数据库。建议先安装好数据库,然后创建一个数据库,用如下脚本初始化表。
CREATE TABLE mvn_user(
ur_id int(11) NOT NULL AUTO_INCREMENT,
ur_user_name varchar(255) DEFAULT NULL,
ur_password varchar(255) DEFAULT NULL,
ur_age int(11) DEFAULT NULL,
ur_status varchar(255) DEFAULT NULL,
PRIMARY KEY (ur_id)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
INSERT INTO mvn_user(ur_user_name,ur_password,ur_age,ur_status) VALUES ('zhangsan', '123', 11, 'Active');
INSERT INTO mvn_user(ur_user_name,ur_password,ur_age,ur_status) VALUES ('lisi', '123', 13, 'Inactive');
INSERT INTO mvn_user(ur_user_name,ur_password,ur_age,ur_status) VALUES ('wangwu', '123', 13, 'Active');
添加相关依赖
在整个 Demo 应用中,需要在创建 Web 工程后,额外添加 4 个依赖,分别是 jstl 依赖、MySQL 数据库驱动依赖、JUnit 4.7 依赖和 json-lib 依赖。它们的依赖配置文件如下:
javax.servlet
jstl
1.2
mysql
mysql-connector-java
5.1.34
junit
junit
4.7
test
net.sf.json-lib
json-lib
2.4
jdk15
添加注册代码
MvnUser.java(用户实体类)代码如下所示:
public class MvnUser {
private int urId;
private String urUserName;
private String urPassword;
private int urAge;
private String urStatus;
public int getUrId() {
return urId;
}
public void setUrId(int urId) {
this.urId = urId;
}
public String getUrUserName() {
return urUserName;
}
public void setUrUserName(String urUserName) {
this.urUserName = urUserName;
}
public String getUrPassword() {
return urPassword;
}
public void setUrPassword(String urPassword) {
this.urPassword = urPassword;
}
public int getUrAge() {
return urAge;
}
public void setUrAge(int urAge) {
this.urAge = urAge;
}
public String getUrStatus() {
return urStatus;
}
public void setUrStatus(String urStatus) {
this.urStatus = urStatus;
}
}
DBConnection.java(连接数据库的公共类)代码如下所示:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
/**
* 获取连接的一个工具类,继承Properties,实现如下封装:
* 1 读取db.properties文件
* 2 获取Connection连接的方法
* 3 关闭资源的方法
*
* @author Noble
* @version 1.0
*/
public class DBConnection extends Properties {
private static DBConnection DB_CONN = null;
/**
* 构造器方法,被私有化,封装读取db.properties逻辑
*
*/
private DBConnection() throws Exception {
InputStream in = DBConnection.class.getClassLoader().getResourceAsStream("db.properties");
this.load(in);
// 加载驱动类
Class.forName(this.getProperty("driverName"));
}
/**
* 单例模式实现,获取DBConnection实例的静态方法
*
* @return DBConnection DBConnection实例
* @throws Exception 初始化db.properties出现问题时,会抛异常
*/
public static DBConnection getInstance() throws Exception {
if (DB_CONN == null) {
DB_CONN = new DBConnection();
}
return DB_CONN;
}
/**
* 基于驱动和db.properties中配置的连接数据库的信息,创建一个新连接返回
*
* @return Connection 创建的新连接对象
*
*/
public Connection getConnection() {
Connection conn = null;
String url = this.getProperty("url");
String userName = this.getProperty("userName");
String password = this.getProperty("password");
//
try {
conn = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
throw new RuntimeException("数据库连接错误,请与管理员联系");
}
return conn;
}
/**
* 关闭操作数据库后的资源
*
* @param conn Connection对象
* @param stmt Statement或Statement的子类对象
* @param rs ResultSet对象
*/
public void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
MvnUserDAO.java(用户的 DAO 持久层类)代码如下所示:
/**import**/
/**
* MvnUser实体对象的持久层代码,封装了对MvnUser实体对象的CRUD方法
*
* @au