900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > JavaWeb中连接数据库的一般方式与通过JNDI连接池的方式

JavaWeb中连接数据库的一般方式与通过JNDI连接池的方式

时间:2020-04-29 07:27:44

相关推荐

JavaWeb中连接数据库的一般方式与通过JNDI连接池的方式

一 概念介绍:

1、连接池

Connection的取得和开放是代价比较高的处理,解决这个问题的方法是连接池。

连接池就是事先取得一定数量的Connection,程序执行处理的时候不是新建Connection,而是取得预先准备好的Connection的使用权。

2、DataSource

提供连接池机能的技术叫DataSource。 Javax.sql.DataSource

一般web服务器会提供。比如Tomcat5.5。

DataSource可以通过new来取得,但通常是通过 JNDI 用 lookup 取得。

3、JNDI(Java Naming and Directory Interface)

Java 命名和目录服务接口(Java Naming and Directory Interface,JNDI)。

命名服务: 可以类比为Session属性的Map的高级版。实现指定名字的对象的,取得和登录。一般Web服务器会提供。

目录服务: 和命名服务类似,但是对象的管理是层次性的。

在命名服务里登录的对象,可以用lookup()取得。

(PS:来源:/nliao/p/3191201.html)

二 最基本的配置jdbc的方式:

importjava.sql.Connection;importjava.sql.DriverManager;publicclassDbConn{privatestaticStringdriver="com.mysql.jdbc.Driver";privatestaticStringurl="jdbc:mysql://127.0.0.1:3306/onlinefriend?useUnicode=true&characterEncoding=utf-8";privatestaticStringuser="root";privatestaticStringpasswd="root";publicstaticConnectiongetConnection(){try{//加载驱动Class.forName(driver);//连接数据库Connectionconn=DriverManager.getConnection(url,user,passwd);returnconn;}catch(Exceptione){e.printStackTrace();}returnnull;}}

三 通过JNDI连接池技术来配置jdbc

1 (在项目名)/WebContent/WEB-INF/ 新建 context.xml,具体内容为:

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""/2002/xmlspec/dtd/2.10/xmlspec.dtd"><Context><Resourcename="jdbc/onlinefriend"auth="Container"type="javax.sql.DataSource"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/onlinefriend?useUnicode=true&amp;characterEncoding=utf-8"username="root"password="root"maxActive="100"maxIdle="30"maxWait="10000"/></Context>

2 在web应用下的 web.xml 增加一个节点(这一步可以省略,这里配置主要是可以使相关配置信息更加稳定)

<resource-ref><description>DBConn</description><res-ref-name>jdbc/onlinefriend</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>

3 配置数据库连接方法类:

importjava.sql.Connection;importjavax.naming.InitialContext;importjavax.sql.DataSource;publicclassDbConn{publicstaticConnectiongetConnection(){try{InitialContextcontext=newInitialContext();DataSourcedSource=(DataSource)context.lookup("java:comp/env/jdbc/onlinefriend");Connectionconn=dSource.getConnection();returnconn;}catch(Exceptione){e.printStackTrace();}returnnull;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。