今天在做四则运算网页版的时候遇到了一个困惑,由于需要把每个产生的式子存进

数据库,所以就需要很多次重复的加载驱动,建立连接等操作,这样一方面写程序不方便,加大了程序量,另一方面,还有导致数据库的性能急剧下降,那么怎么解决这个问题呢?

  我所学到的方法就是通过JDBC数据源和连接池的方式来解决这个问题。利用DataSource来建立数据库的连接不需要加载JDBC驱动,也不需要DriverManager类,通过向一个JNDI服务器查询来得到DataSource对象,然后调用DataSource对象的getConnection()方法来建立数据库的连接。下面代码是一个使用DataSource来建立数据库的连接的实例:

//创建连接和语句对象
Connection conn=null;
Statement stmt=null;

try{
Context ctx=new InitialContext();
     //javax.naming.Context接口定义了将对象和名字绑定,
     //以及通过名字查询对象的方法lookup()。
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/calculation");
conn=ds.getConnection();
stmt=conn.createStatement();
String sql="insert into biaodashi values('"+result+"')";
stmt.execute(sql); stmt.close();
conn.close();
}
catch(Exception e){
System.out.println(e);
}

  下面介绍一下连接池技术:

连接池技术预先建立多个数据库连接对象,然后将连接对象保存到连接池中,党客户请求到来时,从池中取出一个连接对象为客户服务,当请求完成后,客户程序调用close()方法,将连接对象放回池中。

  那么,那么在eclipse下怎么使用这项技术呢,首先就得配置JDBC数据源:

1.打开一个web工程,在webContent目录下的META-INF目录下新建一个叫context的xml文件,

2.打开context.xml文件,以下是context.xml的完整内容(可以直接复制粘贴到你的context.xml文件里(*代表的是自己根据自己的实际情况填写)):

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/*" reloadable="true">
<!-- 配置数据源 -->
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100"
maxldle="30" maxWait="10000" name="jdbc/*" password="****" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/*?autoReconnect=true" username="root"/>
</Context>

这里需要对以上的配置文件进行基本的解释说明:

Context path="/*",这是虚目录,等于给你真正的数据源文件起了一个别名,*可以随便命名;

name="jdbc/*",这是指定资源相对于java:comp/env 上下文的JNDI名,*可以随便命名,但是要记住,下面连接数据库的时候要用。

password=“****”是你的数据库密码。

url="jdbc:mysql://localhost:3306/*?autoReconnect=true"

为指定连接数据库的URL。

(只需要把*号部分换成你数据库的名字即可,其余部分可以不动。)

  

  接下来就是web.xml文件的配置:

1.打开web.xml文件,在<web-app></web-app>之间添加如下代码:

(可以直接复制粘贴到你的web.xml文件里<web-app></web-app>之间(*代表的是自己根据自己的实际情况填写))

<resource-ref>
<description>MySQL DBCP</description>
<res-ref-name>jdbc/*</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

这里<res-ref-name></res-ref-name>之间的内容代表的就是上面配置Context.xml文件里name属性的值。

 

至此,eclipse下JDBC数据源与连接池的配置就弄好了,这个时候最上面的那个实例就可以正常运行了。

eclipse下jdbc数据源与连接池的配置及功能简介的更多相关文章

  1. JDBC数据源连接池的配置和使用实例

    个人学习参考所用,勿喷! 使用JDBC建立数据库连接的两种方式: 1.在代码中使用DriverManager获得数据库连接.这种方式效率低,并且其性能.可靠性和稳定性随着用户访问量得增加逐渐下降. 2 ...

  2. springboot添加多数据源连接池并配置Mybatis

    springboot添加多数据源连接池并配置Mybatis 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190226.html May 12, 2018  ...

  3. 深入理解Spring Boot数据源与连接池原理

    ​ Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...

  4. 《深入理解mybatis原理3》 Mybatis数据源与连接池

    <深入理解mybatis原理> Mybatis数据源与连接池 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构 ...

  5. SSM项目下Druid连接池的配置及数据源监控的使用

    一,连接池的配置 在pom.xml中添加,druid的maven信息 <dependency> <groupId>com.alibaba</groupId> < ...

  6. Spring(Bean)4 配置数据源、连接池

    <!-- 配置数据源 Mysql c3p0: 连接池. <bean id="dataSource" class="com.mchange.v2.c3p0.Co ...

  7. C3P0连接池详细配置

    C3P0连接池详细配置 转自http://msq.javaeye.com/blog/60387 <c3p0-config> <default-config> <!--当连 ...

  8. 配置数据库连接池,Tomcat6.0 连接池的配置

    Tomcat6.0 连接池的配置1.本人当前使用的Tomcat版本为:6.0.20,oracle为稳定的9i版本 2.下文为方便起见,依习惯以%Tomcat_Home%表示Tomcat安装的目录,本人 ...

  9. spring+mybatis+c3p0数据库连接池或druid连接池使用配置整理

    在系统性能优化的时候,或者说在进行代码开发的时候,多数人应该都知道一个很基本的原则,那就是保证功能正常良好的情况下,要尽量减少对数据库的操作. 据我所知,原因大概有这样两个: 一个是,一般情况下系统服 ...

随机推荐

  1. 安德鲁斯Launcher得到的装在手机的应用程序列表

    Launcher最基本的是让所有的应用程序和入口图标的列表.有两种方法来获得,一般: PackageInfo ResolveInfo 执行获取全部APP的Launcher而且同意进行点击事件,进入到应 ...

  2. 使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等

    原文:使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等      WPF预设有Aero, Classic, Luna, Royale主题, WPF程序会根据 ...

  3. 好记性不如烂笔头88-spring3学习(9)-schema的配置的解读和说明

    Spring1使用了DTD格式,spring2以后使用的是schema的格式:使用schema的格式,支持了不同类型的配置拥有了自己的命名空间,让配置文件有了更加好的扩展性. 不论什么事情,都是有利有 ...

  4. Windows,linux下编译qt源码(比较简单)

    一.linux下静态编译qt源码 1.取到qt源码并解压到文件夹 2.cd到qt目录下 3.使用configure生成makefile ./configure–prefix /opt/qtstatic ...

  5. 模拟请求(模拟header gzip解压 泛型)

    WebClient HeaderData是自定义类对象,存储header信息 private static T GetDataCommonMethod<T>(string url, str ...

  6. 2-19-使用apache搭建web网站

    1 搭建一台测试web服务器 案例: 部门内部搭建一台WEB服务器,采用的IP地址和端口为192.168.10.34:80,首页采用index.html 文件.管理员E-mail地址为 xuegod@ ...

  7. 对OO的封装了有了新的理解——希望是普通函数来写总体流程来统管类似的业务,但却又涉及具体操作的函数,仍然可以达到目的

    就是不厌其烦,把那个具体操作函数封装成虚函数,只需要返回它的结果就行.而总体流程根据这个结果继续进行处理,这样就能总体流程和虚函数两不误了.

  8. SQLServer 进程无法向表进行大容量复制(错误号: 22018 20253)

    原文:SQLServer 进程无法向表进行大容量复制 我的环境:SQL SERVER 2008 R2:发布者 ->SQL SERVER 2017 订阅者 进程无法向表“"dbo&quo ...

  9. C#有哪几种定时器

    1.定义在System.Windows.Forms里2.定义在System.Threading.Timer类里3.定义在System.Timers.Timer类里 System.Windows.For ...

  10. PHP 的魔术方法及其应用

    PHP中将所有__(两个下划线)开头的类方法作为魔术方法,这方法之所以称为魔术方法是因为其实现的功能就如变魔术一样感觉很神奇.在特定的事件下触发,这真的很酷. **__construct()** 这个 ...