一、数据库连接池
1、为什么要使用数据库连接池?
数据库连接是一种关键的有限的昂贵的资源,对数据库连接的管理能显著影响到整个应用程序的性能。数据库连接池正是针对这个问题提出来的。
2、常见的数据库连接池有哪些?
C3p0、DBCP、 Tomcat Jdbc Pool、 Druid
3、数据库连接池的原理
连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在数据库连接池中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。
4、C3p0数据库连接池的使用
(1). 导入相关jar包
(2) 在项目src目录下新建一个名叫 c3p0-config.xml,并配置连接池的相关信息
(3). 在代码中使用ComboPooledDataSource对象的getConnection()方法获取数据库连接对象
package util;
import java.sql.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBUtil {
private static ComboPooledDataSource ds;
static{
ds=new ComboPooledDataSource();
}
public static boolean checkByName(String regName){
boolean flag=false;
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
// System.out.println(regName+"mjjjj");
try {
conn=ds.getConnection();
String sql="select * from student where name=?";
ps=conn.prepareStatement(sql);
ps.setString(1, regName);
rs=ps.executeQuery();
if(rs.next()){
// System.out.println(rs.getString("name"));
flag=true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
}
二、Ajax简介
Ajax全称
Asynchronous JavaScript and XML(异步JavaScript 和 XML)
通过Ajax技术可以通过与后台服务器进行少量的数据交换,从而实现网页的异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行局部刷新。
三、JavaScript实现Ajax
1.获取Ajax对象
var xhr=null;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Micorsoft.XMLHttp");
}
2. 使用Ajax对象调用open("请求方式","请求路径","是否为异步")
3. 绑定状态改变事件
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
// 交互成功时执行的代码
}
}
};
4. 发送请求
xhr.send(参数);
注意:若为post提交,则必须设置请求头消息:
setRequestHeader("content-type","application/x-www-form-urlencoded");
采用application/x-www-form-urlencoded的POST数据和url中传参只是形式不同,本质都是传递参数。
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>注册用户</title>
<script type="text/javascript">
function getXHR(){
var xhr=null;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Microsoft.XMLHttp");
}
return xhr;
}
function checkUser(obj){
var regName=obj.value; // 获取填写的注册用户名
var xhr=getXHR(); // 获取Ajax对象
xhr.open("post","/AjaxProject/checkServlet",true);
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded"); // post请求时必须设置该请求头
// 绑定onreadystatechange事件
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
var txt=xhr.responseText; // 获取后台传来的响应文本
document.getElementById("msg").innerHTML=txt;
}
}
};
xhr.send("registerName="+regName); // 发送请求
}
</script>
</head>
<body>
<form action="${pageContext.servletContext.contextPath}/registerServlet" method="post">
注册用户名:<input type="text" name="regName" οnblur="checkUser(this)"/> <span id="msg" style="color:red"></span> <br/><br/>
注册密码:<input type="password" name="regPwd"/> <br/><br/>
<input type="submit" value="注册"/>
</form>
</body>
</html>
四、jQuery实现Ajax
1.使用一个HTTP GET请求从服务器加载数据
$.get( url [, data ] [, success ] )
2.使用一个HTTP POST 请求从服务器加载数据
$.post( url [, data ] [, success ] )
3.执行一个异步的HTTP(Ajax)的请求
$.ajax( [settings ] )
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>注册用户</title>
<script type="text/javascript" src="../js/jquery-3.1.1.js"></script>
<script type="text/javascript">
$(function(){
$("#registername").blur(function(){
$.get("/AjaxProject/checkServlet",{"registerName":$("#registername").val()},
function(data){
$("#msg").html(data);
});
});
});
</script>
</head>
<body>
<form action="${pageContext.servletContext.contextPath}/registerServlet" method="post">
注册用户名:<input type="text" id="registername" name="regName"/> <span id="msg" style="color:red"></span> <br/><br/>
注册密码:<input type="password" name="regPwd"/> <br/><br/>
<input type="submit" value="注册"/>
</form>
</body>
</html>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>注册用户</title>
<script type="text/javascript" src="../js/jquery-3.1.1.js"></script>
<script type="text/javascript">
$(function(){
$("#registername").blur(function(){
$.ajax({
method:"post",
url:"/AjaxProject/checkServlet",
data:{"registerName":$("#registername").val()},
beforeSend:function(){
alert("要发送数据了啊~~~");
},
success:function(data){
$("#msg").html(data);
}
});
});
});
</script>
</head>
<body>
<form action="${pageContext.servletContext.contextPath}/registerServlet" method="post">
注册用户名:<input type="text" id="registername" name="regName"/> <span id="msg" style="color:red"></span> <br/><br/>
注册密码:<input type="password" name="regPwd"/> <br/><br/>
<input type="submit" value="注册"/>
</form>
</body>
</html>