学习目标
通过前面的课程学习,大家对Spring MVC 框架的整体结构和基本请求处理流程已经有了基本的了解,并可以使用Spring MVC 框架做一些简单的开发。(如果没有了解可以去我主页看看 第一至九章的内容来学习)本章将继续学习 Spring MVC 框架的基础知识,包括静态资源的访问、Servlet API 入参等,最终搭建一个 Spring MVC+Spring+JDBC 的框架,帮助大家加深对Spring MVC框架的理解。
10.1 单例模式
设计模式是一套被反复使用、多数人知晓、经过分类编目的代码设计经验的总结。使用设计模式是为了保证代码的可靠性,提高工作效率,让代码更容易被他人理解。java共有23种成熟的设计模式,今天要学习的单例模式就是其中一种。
10.1.1 使用单例模式改造数据库连接功能
单例模式是一种比较基础的设计模式,应用非常广泛,如应用程序的日志应用,Web应用的配置文件读取,数据库连接池的设计,网站的计数器等,并且SpringMVC框架的Controller默认也是单例的。那么到底什么是单例模式?单例模式的优点又有哪些?
1. 加载配置数据
数据库配置信息存储于database.properties配置文件中,具体配置信息如下所示。
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.:3306/cvs_db?useUnicode=true&characterEncoding=utf8
user=root
password=123456
2. 获取数据库的连接对象
使用Connection getConnection()方法获取数据库连接,返回Connection实例。
3. 处理查询操作
ResultSet execute(Connection,PreparedStatement,ResultSet,String,Object[])方法:负责根据传入的参数完成数据的查询操作,返回结果集ResultSet。
4. 处理增、删、改操作
使用int execute(Connection,PreparedStatement,ResultSet,String,Object[])方法根据传入的参数完成数据的更新(增、删、改)操作,返回影响的行数。
5. 关闭数据库连接
使用boolean closeResource(Connection,PreparedStatement,ResultSet)方法,负责根据传入的参数进行相应资源的关闭操作,返回boolean值。
下面是一个使用单例模式改造数据库连接功能的简单示例,这里假设我们使用Java语言和JDBC来连接数据库:
- 定义单例类 DatabaseConnection
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
// 私有静态变量,存储唯一实例
private static DatabaseConnection instance = null;
// 私有构造函数,防止外部通过new创建实例
private DatabaseConnection() {
}
// 静态方法,返回唯一实例
public static DatabaseConnection getInstance() {
if (instance == null) {
instance = new DatabaseConnection();
// 这里可以初始化数据库连接,但为了演示清晰,我们稍后在需要时调用connect方法
}
return instance;
}
// 数据库连接对象
private Connection connection = null;
// 连接数据库的方法
public Connection connect(String url, String user, String password) throws SQLException {
if (connection == null || connection.isClosed()) {
connection = DriverManager.getConnection(url, user, password);
}
return connection;
}
// 关闭数据库连接的方法
public void close() throws SQLException {
if (connection != null && !connection.isClosed(