P与数据库的连接方式 (jsp工程连接数据库)
P是Java服务器页面的缩写,是一种基于Java的服务器端网页开发技术。P的优点在于可以将Java代码嵌入到HTML标记里面,使得网页更加灵活,同时又保留了Java语言的强大功能。而数据库则是网站开发中不可或缺的组成部分,用于存储各种数据信息。本文将介绍,即如何在P中连接数据库实现网页数据的存储和读取。
一、JDBC连接数据库
JDBC(Java Database Connection)是Java语言中连接数据库的标准API(Application Programming Interface)。通过JDBC技术,我们可以在Java代码中操作数据库,实现数据的插入、删除和查询等操作。JDBC的连接方式有两种,分别是DriverManager和DataSource。
1. DriverManager连接方式
DriverManager是JDBC连接数据库的一种方式。首先需要在P中引入JDBC的jar包,然后加载数据库的驱动程序。以MySQL数据库为例,代码如下:
“`java
<%
try{
Class.forName(“com.mysql.jdbc.Driver”); // 加载MySQL驱动程序
Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost/mydb”,”root”,”123456″); // 连接数据库
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(“SELECT * FROM users”); // 执行查询操作
while(rs.next()){
out.println(“姓名:”+rs.getString(1)+”
“);
}
rs.close(); // 关闭结果集
stmt.close(); // 关闭查询
conn.close(); // 关闭连接
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
%>
“`
上面的代码中,首先使用Class.forName()方法加载MySQL驱动程序。然后使用DriverManager.getConnection()方法连接数据库,其中之一个参数为数据库地址,第二个参数为数据库用户名,第三个参数为数据库密码。然后使用Statement对象执行SQL查询语句,并将查询结果ResultSet返回。最后将查询结果输出到网页中,关闭查询、结果集和连接。
2. DataSource连接方式
DataSource是JDBC连接数据库的另一种方式。相比于DriverManager,DataSource连接方式更加灵活,可在多种应用服务器中实现配置,而且提高了数据库连接的效率。以Tomcat服务器中DataSource的配置为例,代码如下:
“`java
<%
Connection conn=null;
try{
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup(“java:comp/env/jdbc/mydb”); // 获取DataSource对象
conn=ds.getConnection(); // 获取Connection对象
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(“SELECT * FROM users”); // 执行查询操作
while(rs.next()){
out.println(“姓名:”+rs.getString(1)+”
“);
}
rs.close(); // 关闭结果集
stmt.close(); // 关闭查询
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(conn!=null) conn.close(); // 关闭连接
}catch(SQLException e){
e.printStackTrace();
}
}
%>
“`
上面的代码中,首先创建InitialContext对象,获取DataSource对象,即通过JNDI服务检索资源。其中之一个参数为“java:comp/env”,表示在context中的java:comp下面的env环境。第二个参数为数据源的JNDI名称。接着使用DataSource.getConnection()方法获取数据库连接对象,然后执行SQL查询语句,将结果输出到网页中,并关闭查询、结果集和连接。注意,在DataSource连接方式中需要手动关闭连接。
二、连接池技术
连接池是一种数据库连接的管理技术,用于管理数据库的连接对象,实现数据库连接的复用和共享。连接池技术可以提高数据库连接的效率,避免频繁地创建和销毁数据库连接。连接池的实现方式有很多,比如Apache Commons DBCP、C0等。
以C0连接池为例,配置方法如下:
1. 引入C0的jar包
在P工程下创建lib目录,将C0的jar包放入其中。
2. 在web.xml中配置C0的初始化参数
在web.xml文件中添加以下配置:
“`xml
driverClass
com.mysql.jdbc.Driver
jdbcUrl
jdbc:mysql://localhost/mydb
user
root
password
123456
acquireIncrement
5
initialPoolSize
20
minPoolSize
10
maxPoolSize
50
maxStatements
100
idleConnectionTestPeriod
60
“`
上面的配置文件中,一共定义了10个初始化参数,这些参数都是C0连接池中的属性,用于控制数据库连接的数量、超时时间和缓存等方面。例如,driverClass参数表示数据库驱动程序的完整类名,jdbcUrl参数表示数据库连接的URL地址,user和password参数表示数据库的用户名和密码,minPoolSize和maxPoolSize参数表示连接池中保持的最小和更大连接数,maxStatements参数表示连接池中最多可以缓存的PreparedStatement数目,idleConnectionTestPeriod参数表示连接池中连接的最小空闲时间。
3. 在P中使用C0连接池
在P中使用C0连接池时,需要注意以下几点:
(1)引入C0的jar包
“`java
“`
(2)创建C0连接池对象
“`java
ComboPooledDataSource dataSource=new ComboPooledDataSource();
“`
(3)设置连接池属性
“`java
dataSource.setDriverClass(getServletContext().getInitParameter(“driverClass”));
dataSource.setJdbcUrl(getServletContext().getInitParameter(“jdbcUrl”));
dataSource.setUser(getServletContext().getInitParameter(“user”));
dataSource.setPassword(getServletContext().getInitParameter(“password”));
dataSource.setAcquireIncrement(Integer.parseInt(getServletContext().getInitParameter(“acquireIncrement”)));
dataSource.setInitialPoolSize(Integer.parseInt(getServletContext().getInitParameter(“initialPoolSize”)));
dataSource.setMinPoolSize(Integer.parseInt(getServletContext().getInitParameter(“minPoolSize”)));
dataSource.setMaxPoolSize(Integer.parseInt(getServletContext().getInitParameter(“maxPoolSize”)));
dataSource.setMaxStatements(Integer.parseInt(getServletContext().getInitParameter(“maxStatements”)));
dataSource.setIdleConnectionTestPeriod(Integer.parseInt(getServletContext().getInitParameter(“idleConnectionTestPeriod”)));
“`
(4)获取数据库连接对象
“`java
Connection conn=dataSource.getConnection();
“`
(5)使用连接对象执行SQL语句
“`java
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(“SELECT * FROM users”);
while(rs.next()){
out.println(“姓名:”+rs.getString(1)+”
“);
}
rs.close();
stmt.close();
“`
(6)关闭连接对象
“`java
if(conn!=null) conn.close();
“`
以上就是使用C0连接池连接数据库的完整流程。
三、
本文介绍了,包括JDBC连接方式、DataSource连接方式和连接池技术。在开发网站时,选择合适的数据库连接方式是非常重要的,可以提高网站的性能和稳定性。有很多种,需要根据项目的实际需求进行选择。同时,在编码过程中需要注意数据库连接对象的关闭和异常处理等方面,以保证网站的安全和可靠性。