比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

Java学习–Ajax与数据库连接池

Java学习–Ajax与数据库连接池http://www.bieryun.com/2544.html

概述

数据库连接池
Ajax简介
JavaScript实现Ajax

jQuery实现Ajax

一:数据库连接池

数据库连接是一种关键的有限的昂贵的资源,对数据库连接的管理能显著影响到整个应用程序的性能。数据库连接池正是针对这个问题提出来的。
常见的数据库连接池有哪些:    C3p0、DBCP、 Tomcat Jdbc Pool、 Druid
1.  数据库连接池的原理:
连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在数据库连接池中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。
2.  C3P0连接池的使用:
a. 导入相关jar包
b.  在项目src目录下新建一个名叫  c3p0-config.xml,并配置连接池的相关信息
c. 在代码中使用ComboPooledDataSource对象的getConnection()方法获取数据库连接对象

二:Ajax简介

Ajax  :    Asynchronous JavaScript and XML(异步JavaScript 和 XML)
通过Ajax技术可以通过与后台服务器进行少量的数据交换,从而实现网页的异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行局部刷新

三:JavaScript实现Ajax

1.获取Ajax对象
var xhr=null;
if(window.XMLHttpRequest){   //判断是否为空,如果有此对象,则实例化一个XMLHttpRequest对象
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject(“Micorsoft.XMLHttp”);
}
2. 使用Ajax对象调用open(“请求方式”,”请求路径”,”是否为异步”)     //”请求方式”为 “get”/”post” ; “是否为异步”默认为“true”
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中传参只是形式不同,本质都是传递参数。)

eg:

DBUtil.java

[java] view plain copy

  1. package util;
  2. import java.sql.*;
  3. import com.mchange.v2.c3p0.ComboPooledDataSource;
  4. public class DBUtil {
  5.    private static ComboPooledDataSource ds;
  6.    static{
  7.        ds=new ComboPooledDataSource();
  8.    }
  9.    // 检查是否存在此注册名
  10.    public static boolean checkRegisterName(String regName){
  11.        boolean flag=false;
  12.        Connection conn=null;
  13.        PreparedStatement ps=null;
  14.        ResultSet rs=null;
  15.        try {
  16.            conn=ds.getConnection();
  17.            String sql=“select * from user where username=?”;
  18.            ps=conn.prepareStatement(sql);
  19.            ps.setString(1,regName);
  20.            rs=ps.executeQuery();
  21.            if(rs.next()){
  22.                flag=true;   // 如果已经存在此用户名,则改变flag为true
  23.            }
  24.        } catch (SQLException e) {
  25.            e.printStackTrace();
  26.        }finally{
  27.            try {
  28.                rs.close();
  29.                ps.close();
  30.                conn.close();
  31.            } catch (SQLException e) {
  32.                e.printStackTrace();
  33.            }
  34.        }
  35.        return flag;
  36.    }
  37. }

CheckNameServlet.java

[java] view plain copy

  1. package servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import util.DBUtil;
  10. @WebServlet(name=“CheckNameServlet”,urlPatterns={“/checkServlet”})
  11. public class CheckNameServlet extends HttpServlet {
  12.     @Override
  13.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  14.             throws ServletException, IOException {
  15.         doPost(req,resp);
  16.     }
  17.     @Override
  18.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  19.             throws ServletException, IOException {
  20.         resp.setHeader(“content-type”,“application/x-www-form-urlencoded”);
  21.         resp.setCharacterEncoding(“utf-8”);
  22.         PrintWriter pw=resp.getWriter();
  23.         String regName=req.getParameter(“registerName”);
  24.         System.out.println(“后台接收到的注册名为:”+regName);
  25.         boolean flag=DBUtil.checkRegisterName(regName);
  26.         if(flag){
  27.             pw.println(“sorry,该用户名已被注册,请选择其他注册名!”);
  28.         }else{
  29.             pw.println(“恭喜,可以使用该注册名~~~”);
  30.         }
  31.         pw.flush();
  32.         pw.close();
  33.     }
  34. }

register.jsp

[html] view plain copy

  1. %@ page contentType=“text/html; charset=utf-8” pageEncoding=“utf-8”%>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset=“utf-8”/>
  6. <title>注册用户</title>
  7. <script type=“text/javascript”>
  8.     function getXHR(){
  9.         var xhr=null;
  10.         if(window.XMLHttpRequest){
  11.             xhr=new XMLHttpRequest();
  12.         }else{
  13.             xhr=new ActiveXObject(“Microsoft.XMLHttp”);
  14.         }
  15.         return xhr;
  16.     }
  17.     function checkUser(obj){
  18.         var regName=obj.value;   // 获取填写的注册用户名
  19.         var xhr=getXHR();   // 获取Ajax对象
  20.         xhr.open(“get”,”/AjaxProject/checkServlet?registerName=”+regName,true);
  21.         // 绑定onreadystatechange事件
  22.         xhr.onreadystatechange=function(){
  23.             if(xhr.readyState==4){
  24.                 if(xhr.st<span style=“color:#FF0000;”><span style=“color:#000000;”>atus=</span></span>=200){
  25.                     var txt=xhr.responseText;   // 获取后台传来的响应文本
  26.                     document.getElementById(“msg”).innerHTML=txt;
  27.                 }
  28.             }
  29.         };
  30.         xhr.send(null);   // 发送请求
  31.     }
  32. </script>
  33. </head>
  34. <body>
  35.    <form action=“${pageContext.servletContext.contextPath}/registerServlet” method=“post”>
  36.         注册用户名:<input type=“text” name=“regName” onblur=“checkUser(this)”/> <span id=“msg” style=“color:red”></span> <br/><br/>
  37.         注册密码:<input type=“password” name=“regPwd”/> <br/><br/>
  38.         <input type=“submit” value=“注册”/>
  39.    </form>
  40. </body>
  41. </html>

 

四:jQuery实现Ajax

1.使用一个HTTP GET请求从服务器加载数据   :  $.get( url [, data ] [, success ] )
2.使用一个HTTP POST 请求从服务器加载数据  :  $.post( url [, data ] [, success ] )
3.执行一个异步的HTTP(Ajax)的请求 :   $.ajax( [settings ] )

[html] view plain copy

  1. <%@ page contentType=“text/html; charset=utf-8” pageEncoding=“utf-8”%>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset=“utf-8”/>
  6. <title>注册用户</title>
  7. <script type=“text/javascript” src=“../js/jquery-3.1.1.js”></script>
  8. <script type=“text/javascript”>
  9.     $(function(){
  10.         $(“#registername”).blur(function(){
  11.             <strong><span style=“color:#660000;”>$.get(“/AjaxProject/checkServlet”,{“registerName”:$(“#registername”).val()},
  12.                     function(data){
  13.                         $(“#msg”).html(data);
  14.                     });</span></strong>
  15.         });
  16.     });
  17. </script>
  18. </head>
  19. <body>
  20.    <form action=“${pageContext.servletContext.contextPath}/registerServlet” method=“post”>
  21.         注册用户名:<input type=“text” id=“registername” name=“regName”/> <span id=“msg” style=“color:red”></span> <br/><br/>
  22.         注册密码:<input type=“password” name=“regPwd”/> <br/><br/>
  23.         <input type=“submit” value=“注册”/>
  24.    </form>
  25. </body>
  26. </html>

 

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS