首页 > 代码库 > 连接池的使用(一)
连接池的使用(一)
数据库操作中,和数据库建立连接是最为耗时的操作之一,而且数据库都有最大连接数目的限制
,如果很多用户访问的是同一数据库,所进行的都是同样的操作,那么为每个用户都建立一个连
接是不合理的; 连接池的思想是:Tomcat服务器可以预备好若干个连接对象,将这些对象存放在一个称为连接池
的容器中(通常由链表来担任这一角色),当某用户需要操作数据库时,只要从连接池中取出一
个连接对象,当用户使用完该连接对象后,将该连接对象放回到连接池中。如果连接池中没有连
接对象可以用,那么该用户就必须等待。 如下例子是使用scope=application的bean(由ApplicationCon类负责创建)。该bean创建时就
建立若干连接对象,并将它们存放在一个LinkedList对象(连接池)中。因此,所有用户将共享
LinkedList对象中的连接对象。
一、ApplicationCon
1 package database.operation; 2 import java.sql.*; 3 import java.util.LinkedList; 4 public class ApplicationCon { 5 6 LinkedList<Connection> list;//存放Connection对象的链表 7 public ApplicationCon() 8 { 9 try10 {11 Class.forName("com.mysql.dbc.Driver");12 }catch(Exception e)13 {14 15 }16 list=new LinkedList<Connection>();17 //创建十个连接18 for(int k=1;k<=10;k++)19 {20 try{21 String uri="jdbc:mysql://localhost/factory";22 Connection conn=DriverManager.getConnection(uri,"root","003222");23 list.add(conn);24 }25 catch(SQLException e)26 {}27 }28 }29 public synchronized Connection getOneConnection()30 {31 if(list.size()>0)32 {33 return list.removeFirst();//链表删除第一个结点,并返回该结点的连接对象34 35 }36 else37 return null;38 }39 public synchronized void putBackOneConnection(Connection conn)40 {41 list.addFirst(conn);42 }43 }
二、UseConnBean
1 package database.operation; 2 import java.sql.*; 3 4 5 public class UseConnBean { 6 String tableName=""; 7 StringBuffer queryResult;//查询结果 8 Connection conn; 9 public UseConnBean()10 {11 queryResult=new StringBuffer();12 }13 public void setTableName(String s)14 {15 tableName=s.trim();16 queryResult=new StringBuffer();17 }18 public String getTableName()19 {20 return tableName;21 }22 public void setConnection(Connection con)23 {24 this.conn=con;25 }26 public StringBuffer getQueryResult()27 {28 Statement sql;29 ResultSet rs;30 try{31 queryResult.append("<table border=1>");32 DatabaseMetaData metadata=http://www.mamicode.com/conn.getMetaData();33 ResultSet rs1=metadata.getColumns(null, null, tableName, null);34 int filedCount=0;35 queryResult.append("<tr>");36 while(rs1.next())37 {38 filedCount++;39 String clumnName=rs1.getString(4);40 queryResult.append("<td>"+clumnName+"</td>");41 }42 queryResult.append("</tr>");43 sql=conn.createStatement();44 rs=sql.executeQuery("select * from "+tableName);45 while(rs.next())46 {47 queryResult.append("<tr>");48 for(int k=1;k<=filedCount;k++)49 {50 queryResult.append("<td>"+rs.getString(k)+"</td>");51 }52 queryResult.append("</tr>");53 }54 queryResult.append("</table>"); 55 }56 catch(SQLException e)57 {58 queryResult.append("请输入正确的表名"+e);59 }60 return queryResult;61 }62 }
三、JSP页面代码
1 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 <%@ page contentType="text/html; charset=GBK" %> 7 <%@ page import="database.operation.*" %> 8 <%@ page import="java.sql.*" %> 9 <jsp:useBean id="connSet" class="database.operation.ApplicationCon" scope="application"/>10 <jsp:useBean id="inquire" class="database.operation.UseConnBean" scope="request" />11 <% Connection connection=connSet.getOneConnection();12 inquire.setConnection(connection);13 %>14 <jsp:setProperty name="inquire" property="tableName" param="tableName"/>15 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">16 <html>17 <head>18 <base href=http://www.mamicode.com/"<%=basePath%>">19 20 <title>My JSP ‘lianjiechi.jsp‘ starting page</title>21 22 <meta http-equiv="pragma" content="no-cache">23 <meta http-equiv="cache-control" content="no-cache">24 <meta http-equiv="expires" content="0"> 25 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">26 <meta http-equiv="description" content="This is my page">27 <!--28 <link rel="stylesheet" type="text/css" href=http://www.mamicode.com/"styles.css">29 -->30 31 </head>32 33 <body>34 你连接的数据库是factory35 <form action="" method="post">36 输入表的名字:<input type=text name="tableName" size=10>37 <input type=submit name="g" value=http://www.mamicode.com/"提交">38 39 </form>40 在<jsp:getProperty name="inquire" property="tableName"/>表查询到的记录;41 <BR><jsp:getProperty name="inquire" property="queryResult"/>42 <% 43 connSet.putBackOneConnection(connection);44 %>45 46 </body>47 </html>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。