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

相关文章
|
26天前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
86 43
Java学习十六—掌握注解:让编程更简单
|
12天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
1月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
31 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
18天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
38 2
|
19天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
1月前
|
SQL NoSQL 关系型数据库
数据库学习
【10月更文挑战第8天】
21 1
|
1月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
61 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
1月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
41 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
70 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
1月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
25 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql