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

简介: Java学习--Ajax与数据库连接池 概述 数据库连接池 Ajax简介 JavaScript实现Ajax jQuery实现Ajax 一:数据库连接池 数据库连接是一种关键的有限的昂贵的资源,对数据库连接的管理能显著影响到整个应用程序的性能。

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

概述

数据库连接池
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>

 原文地址http://www.bieryun.com/2544.html

相关文章
|
14天前
|
消息中间件 前端开发 Java
java学习路径
【4月更文挑战第9天】java学习路径
17 1
|
21天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
14天前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
15 1
|
20天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
4天前
|
JavaScript Java 测试技术
基于Java的驾考自主学习预约平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的驾考自主学习预约平台的设计与实现(源码+lw+部署文档+讲解等)
15 0
|
5天前
|
JavaScript Java 测试技术
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 1
|
5天前
|
JavaScript Java 测试技术
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
20 0
|
7天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
11天前
|
Java 存储
键值之道:深入学习Java中强大的HashMap(二)
键值之道:深入学习Java中强大的HashMap
20 0
键值之道:深入学习Java中强大的HashMap(二)
|
13天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
30 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)