JSP Servlet数据源连接池的配置需要完成以下步骤:
第一步:导入数据库驱动包
在项目中的WebContent/WEB-INF/lib目录下,将数据库驱动包导入,例如MySQL数据库的驱动包mysql-connector-java-8.0.16.jar。
第二步:在web.xml文件中配置数据源连接池
在web.xml文件中,新增以下内容:
<resource-ref>
<description>MySql Data Source</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
其中res-ref-name是数据源的命名,可以根据实际情况自定义,但必须与后面的配置一致。
第三步:在context.xml文件中配置数据源
在WebContent/META-INF目录下,新建context.xml文件,新增以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/">
<!-- 数据库配置 -->
<Resource name="jdbc/TestDB" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="password" driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
</Context>
其中name属性的值必须与之前web.xml中配置的res-ref-name相同,url属性中的localhost:3306/test是数据库的地址和名称,username和password分别是MySQL数据库的用户名和密码。
示例一:JSP页面中使用数据源连接池
在JSP页面中,使用JNDI获取数据源连接池,并调用数据库操作方法:
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Context ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/TestDB");
conn = ds.getConnection();
pstmt = conn.prepareStatement("SELECT * FROM users");
rs = pstmt.executeQuery();
while (rs.next()) {
// 处理数据库查询结果
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try { if (rs != null) rs.close(); } catch (Exception e) {}
try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}
try { if (conn != null) conn.close(); } catch (Exception e) {}
}
%>
示例二:Servlet中使用数据源连接池
在Servlet中,使用JNDI获取数据源连接池,并调用数据库操作方法:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.naming.*;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
envCtx.lookup("jdbc/TestDB");
conn = ds.getConnection();
pstmt = conn.prepareStatement("SELECT * FROM users");
rs = pstmt.executeQuery();
while (rs.next()) {
// 处理数据库查询结果
}
} catch (SQLException e) {
throw new ServletException(e);
} catch (NamingException e) {
throw new ServletException(e);
} finally {
try { if (rs != null) rs.close(); } catch (Exception e) {}
try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}
try { if (conn != null) conn.close(); } catch (Exception e) {}
}
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP Servelet 数据源连接池的配置 - Python技术站