连接数据库 JDBC、DBCP、JNDI
一、JDBC
package com.direct.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class JDBCutil {
/*
* 目前使用的JDBC连接数据库,存在问题:
* 每次连接和释放需要比较多的资源
* 资源浪费比较严重,系统的性能下滑
*
* 连接池的原理:
* 提前设定好,数据库的连接对象,当用户连接数据库时,直接从
* “池子”中取出一个连接即可。
* 当用户使用完毕后,“关闭连接”不是物理关闭,而是把连接放回连接池中
*/ private static final String DRIVER="com.mysql.jdbc.Driver";
private static final String URL="jdbc:mysql://localhost:3306/countryside_buy?userUnicode=true&characterEncoding=utf-8";
private static final String USER="root";
private static final String PWD="123456";
static{
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获得链接
public Connection createConn(){
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, USER, PWD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
} //关闭连接
public void closeJ(Connection conn,PreparedStatement ps,ResultSet rs) throws SQLException{
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(conn!=null) conn.close();
}
}
二,DBCP
2.1 dbcp.properties
username=root
password=123456
driverClassName=com.mysql.jdbc.Driver
maxActive=2000
maxIdle=520
maxWait=5000
url=jdbc\:mysql\://localhost\:3306/countryside_buy
2.2 DBCPutil
package com.direct.util; import java.sql.Connection;
import java.sql.SQLException;
import java.util.ResourceBundle; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource;
/*
* DBCP使用步骤:
* 1,下载需要的jar包,放入web项目的lib下面
* 2,在src下面建立配置文件 .properties
* 3, 建立连接数据库工具,获取配置信息,
* 4,commons-dbcp.jar
* commons-pool-1.5.3.jar
* musql-connector-java-5.1.7.jar
*/ public class DBCPutil {
//数据源
private static DataSource ds= null;
//基本数据源
static BasicDataSource bds = new BasicDataSource();
public static Connection getconn() throws SQLException{
if (ds==null) {
ResourceBundle rs = ResourceBundle.getBundle("dbcp");
String username = rs.getString("username");
String password = rs.getString("password");
String driverClassName = rs.getString("driverClassName");
String maxActive = rs.getString("maxActive");
String maxIdle = rs.getString("maxIdle");
String maxWait = rs.getString("maxWait");
String url = rs.getString("url"); bds.setMaxActive(Integer.parseInt(maxActive));
bds.setMaxIdle(Integer.parseInt(maxIdle));
bds.setMaxWait(Integer.parseInt(maxWait));
bds.setUrl(url);
bds.setUsername(username);
bds.setPassword(password);
bds.setDriverClassName(driverClassName); ds = bds;
return ds.getConnection(); }
return ds.getConnection();
}
//测试
public static void main(String[] args) {
try {
System.out.println(getconn());
} catch (SQLException e) {
e.printStackTrace();
}
} }
三,JNDI
1,所需放在tomcat安装路径的lib目录下 commons.pool-1.5.3.jar 和 mysql-connector-java-5.1.7-bin.jar
2,tomcat中找到config文件夹下的context.xml
在标签<Context>中添加
<Resource
name="jndiDemo"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/countryside_buy"
username="root"
password="123456"
maxActive="100"
maxIdle="30"
maxWait="3000"
/>
3,项目的web.xml中添加映射
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 配置JNDI -->
<resource-ref>
<res-ref-name>jndiDemo</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> <servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>JndiServlet</servlet-name>
<servlet-class>com.direct.servlet.JndiServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>JndiServlet</servlet-name>
<url-pattern>/JndiServlet</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>register.jsp</welcome-file>
</welcome-file-list>
</web-app>
4,jndi类
package com.direct.util; import java.sql.Connection;
import java.sql.SQLException; import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource; public class JNDIutil {
/*
* JNDI是tomcat提供的一种标准的连接池
* 1,将驱动放入项目中tomcat的lib目录下
* 2,修改配置文件(tomcat中找到config文件夹下的context.xml)
* 3,在web.xml下配置
*/
public static Connection conn(){
Connection connection = null;
try {
//获得对数据源的引用
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jndiDemo");
//获得数据库连接对象
connection = ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection; }
}
5,servlet 测试jndi
package com.direct.servlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.direct.util.JNDIutil; public class JndiServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
System.out.println(new JNDIutil().conn());
//jdbc:mysql://localhost:3306/countryside_buy, UserName=root@localhost, MySQL-AB JDBC Driver } }
最后开启服务器,访问 jndiServlet 后台即可得到连接,并输出连接地址
连接数据库 JDBC、DBCP、JNDI的更多相关文章
- 理解JDBC和JNDI
下面的英文是我找过来的,因为是英文所以不敢翻译出来误导别人,但是它描述的确实恰到好处,比所谓网上的JNDI和JDBC云云的解释要精辟很多,如果遇到不认识的单词,用有道吧~~:) The Java Na ...
- JDBC、JNDI和DBCP的区别
JDBC:Java DataBase Connectivity,java连接数据库和执行SQL语句的API. 数据源:Data Source.就是将IP.数据库.用户名.密码封装起来对外只提供一个JN ...
- tomcat+dbcp+jndi 配置
1)添加jar包 tomcat6中 TOMCAT_HOME/lib 下是公用jar包 dbcp需要3个jar包:Jakarta-Commons DBCP,Jakarta-Commons Collect ...
- java jdbc dbcp连接SQL Server
使用到的jar: commons-collections-3.1.jar commons-dbcp-1.4.jar commons-pool-1.5.6.jar sqljdbc4.jar dbcp配置 ...
- java连接数据库——JDBC连接数据库
DBUtil.java // 数据库操作文件 package com.bjpowernode.jdbc.util; import java.io.File; import java.io.File ...
- JDBC与JNDI的区别
程序员开发时,知道要开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL 连接到数据库. 就像以下代码这样: Connec ...
- java连接数据库(jdbc)调用配置文件
各种语言都有自己所支持的配置文件,后缀名“.properties”结尾的就是其中之一. 在java连接数据库时,采取读取配置文件的方式,来获取数据库连接. 新建jdbc.properties文件,内容 ...
- JSP 连接数据库JDBC有一定的了解
JSP 连接数据库 本章节假设您已经对JDBC有一定的了解.在开始学习JSP数据库访问前,请确保JDBC环境已经正确配置. 首先,让我们按照下面的步骤来创建一个简单的表并插入几条简单的记录: 创建表 ...
- c3p0;jdbc;dbcp;mybatis;ubutils;
[说明]今天还是完成了一定东西的,上午是jdbc的测试,下午是 数据库连接池 和 dbutils 的测试,晚上是mybatis的测试,都是找了一些网上的例子运行了一下,解决出现的问题. 一:今日完成 ...
随机推荐
- Django(图书管理系统1)
day63 内容回顾 1. 单表的增删改查 1. 删和改 1. GET请求 URL传值 1. 格式 ...
- 【JS深入学习】——函数创建和重载
今天做一个关注/取消的功能,由于需要向后台发送请求,想通过控制用户点击发送的频次减少不必要的请求,即在一定时间内,用户点击多次但只发送一次数据,自然而然想到了使用[函数节流]. function th ...
- jvm(1)类的加载(二)(自定义类加载器)
[深入Java虚拟机]之四:类加载机制 1,从Java虚拟机的角度,只存在两种不同的类加载器: 1,启动类加载器:它使用C++实现(这里仅限于Hotspot,也就是JDK1.5之后默认的虚拟机,有其他 ...
- java中常见的异常
空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:Arra ...
- RabbitMq qos prefetch 消息堵塞问题
mq是实现代码扩展的有利手段,个人喜欢用概念来学习新知识,介绍堵塞问题的之前,先来段概念的学习. ConnectionFactory:创建connection的工厂类 Connection: 简单理解 ...
- 第7章—SpringMVC高级技术—处理异常
处理异常 处理异常 不管发生什么事情,不管是好的还是坏的,Servlet请求的输出都是一个Servlet响应.如果在请求处理的时候,出现了异常,那它的输出依然会是Servlet响应.异常必须要以某种方 ...
- LetExpr表达式解读
Integer a = 0; a++; 举个例子,如下: package com.test19; public class BugReport<T> { private T n; publ ...
- JAVA跨域资源访问CORSFilter
当一个资源从与该资源本身所在的服务器不同的域或端口不同的域或不同的端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求.跨域资源共享机制允 ...
- springcloud 熔断处理
在springcloud微服务中,有时候一个服务挂了,我们需要友好的提示,此时我们在api网关路由上做一下过滤,进行友好的提示处理. 代码如下: import com.fasterxml.jackso ...
- Nodejs学习笔记(十六)—Pomelo介绍&入门
前言&介绍 Pomelo:一个快速.可扩展.Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错 ...