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:来源:http://www.cnblogs.com/nliao/p/3191201.html)
二 最基本的配置jdbc的方式:
import java.sql.Connection;
import java.sql.DriverManager;public class DbConn {private static String driver = "com.mysql.jdbc.Driver";private static String url = "jdbc:mysql://127.0.0.1:3306/onlinefriend?useUnicode=true&characterEncoding=utf-8";private static String user = "root";private static String passwd = "root";public static Connection getConnection(){try {//加载驱动Class.forName(driver); //连接数据库Connection conn = DriverManager.getConnection(url,user,passwd);return conn; } catch (Exception e) { e.printStackTrace();} return null;}}
三 通过JNDI连接池技术来配置jdbc
1 (在项目名)/WebContent/WEB-INF/ 新建 context.xml,具体内容为:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd"> <Context> <Resource name="jdbc/onlinefriend"auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/onlinefriend?useUnicode=true&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 配置数据库连接方法类:
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;public class DbConn {public static Connection getConnection(){try { InitialContext context = new InitialContext();DataSource dSource = (DataSource) context.lookup("java:comp/env/jdbc/onlinefriend");Connection conn = dSource.getConnection();return conn; } catch (Exception e) { e.printStackTrace();} return null;}}
转载于:https://blog.51cto.com/983836259/1697610
JavaWeb中连接数据库的一般方式与通过JNDI连接池的方式相关推荐
- 数据库基础面试题-JDBC连接池实现方式
23.JDBC连接池实现方式?(多选题) A. 自定义连接池 B. C3P0 C. C5P0 D. DABP E. DBCP 正确答案是:ABE 数据库基础面试题-中级32题
- Tomcat7和mysql连接池dbcp方式的配置方法和测试
一.设计测试用的数据库 1.新建数据库 create database testmysql; 2.新建一个用户信息数据表 create table test( username varchar(20) ...
- 走进JavaWeb技术世界3:JDBC的进化与连接池技术
网络访问 随着 Oracle, Sybase, SQL Server ,DB2, Mysql 等人陆陆续续住进数据库村, 这里呈现出一片兴旺发达的景象, 无数的程序在村里忙忙碌碌, 读写数据库, ...
- C3P0连接池配置方式
c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件 1. ...
- redis-稿件-python连接redis-使用连接池的方式来创建
连接池 看看效率 性能不好 稍好一点 使用单例模式来做链接池 然后就可以了
- c# mysql连接字符串_c#中数据库字符串的连接几种方式
ADO.net 中数据库连接方式(微软提供) 微软提供了以下四种数据库连接方式: System.Data.OleDb.OleDbConnection System.Data.SqlClient.Sql ...
- ADO.NET中在C/S模式中使用的连接池
前几天同事问我一个问题,一种CS架构的程序,直接把SQL Server作为服务端,每个客户端直接连接数据库操作,如果客户端打开的数量过多时SQL Server的连接数将会特别高,数据库端形成性能瓶颈, ...
- ado.net mysql 连接池_ADO.NET中SQL Server数据库连接池
实际上,大多数应用程序仅使用一个或几个不同的连接配置. 这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭. 为了使打开的连接成本最低,ADO.NET 使用称为连接池的优化方法. 连接池减少 ...
- Tomcat中设置数据源和连接池
对于大型网站来说,信息查询的次数会非常多,每次查询都需要这样的过程:加载驱动程序.创建连接.创建语句对象.执行SQL语句.关闭这些对象.这样使得每一个用户访问的时候都需要服务器做出相应,这样的话服务器 ...
最新文章
- Go 知识点(16)— 将枚举值转换为字符串
- 深入理解计算机系统——系统级I/O
- android背景图拉伸,Android使背景图像不拉伸它指定的视图_android_开发99编程知识库...
- matlab用socket线程发送数据,使用Python Twisted和Autobahn从Matlab通过WebSocket发送JSON数据...
- 数据库以及表的基本操作
- 天猫整站SSM-分页-limit(做个人学习笔记整理用)
- C++ 之 转义字符
- 2019-06-02 15:27:20
- python一次性输入多个数_python如何利用input函数输入多个参数?
- ORA-01092解决一例
- ubuntu mysql 编译_Ubuntu下mysql编译安装
- Python请求外部POST请求,常见四种请求体
- stm32与计算机串口通信,STM32串口通信协议
- 单片机c语言讲解,单片机C语言基础知识讲解.ppt
- 电子电路基础 (14)——稳压电源的工作原理分析
- 如何处理Git中没有小绿勾的问题
- disruptor框架为什么不流行_五笔输入法那么厉害,为什么现在不流行了?
- 浅谈微分求导+泰勒展开+生成函数
- Vysor使用——用电脑操作手机 无需Root
- 搜索导航HTML,CSS 带搜索导航栏的示例代码