开发者社区> 推荐码发放> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java 集合:Collection,List,ArrayList,Vector,LinkedList(实现方式,对比)
Collection 与 List Collection 是 Java 集合的一个根接口,JDK 没有它的实现类。 内部仅仅做 add(),remove(),contains(),size() 等方法的声明。 List 接口是Collection 接口的一个子类,在Collection 基础上扩
1895 0
Java DNS查询内部实现
源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的。比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddress.
2257 0
一个让开发人员仅通过声明式代码的方式实现智能数据结构的Java框架
一个朋友的框架发布1.1版本,和1.0在运行时生成额外字节码不同,1.1在编译时通过maven插件生成额外字节码,因此避免了暴露微量的设计模式给用户,让用法更简单粗暴,性能也更高。很大一部分不太像框架了,而更像是java语言的扩展,是个重大升级。此外,充分吸取1.0的教训,给出架构图并,让所有文档中英文双版,避免别人不明全局。另外,不再兼容java7。原文 - https://githu
5558 0
JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习 我们继续说一下集合框架 Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复 Set集合的功能和Collection是一致的 我们重点关注的是子类对象 我们来聊聊 一.
926 0
使用监听器实现Java Web的定时执行
定时器GoogleListener类: import java.util.Timer;//定时器类 import javax.
545 0
利用java代码和web拦截器轻松实现一个app抓包工具
    目前app测试时我们需要对接口数据进行抓包,对于app的抓包,我们可以使用很多现成的工具,比如fiddler、wireshark、charles等,基本上可以满足要求,但是对于一些定制化的需求,比如说:我们需要将抓包的数据进行篡改后再发送到服务器,或者对请求的数据新增标志字段以便定位问题,或者更多需要更改数据的需求,传统抓包工具已经很难实现,需要我们探索新的方式方法。
1505 0
Java 继承Thread类和实现Runnable接口的区别
ava中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类     在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程。当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,
1302 0
Java实现红黑树
红黑树概要 二叉查找树实现了基本操作时间复杂度O(h),但是树的高度h在最坏的情况下可能变为n 红黑树是一种平衡二叉树,可以保证树的高度 h = lg(N) 红黑树的性质 红黑树为每个节点添加了颜色存储位,确保了任何一个从根到叶子的路径长度不会比其他路径长出2倍 每个节点是红色或者黑色 根节点是黑色的 叶子节点是黑色的 红色节点的子节点都是黑色的 当前节点到其后代叶子节点的所有简单路径路的黑色节点数目相同 性质4确保了根节点到任意叶子节点的路径长度不会比到其他叶子节点的路径长度长出2倍。
865 0
Java实现二叉查找树
二叉查找树 基本性质:对任何节点x,其左子树的任意key不大于x.key,其右子树的任意节点不小于x.key 实现集合操作 search,minimum,maximum,predecessor,successor,...
744 0
+关注
推荐码发放
阿里云优惠码阿里云推荐券bieryun.com
文章
问答
文章排行榜
最热
最新
相关电子书
更多
MySQL Java开发实战
立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题)
立即下载
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题)
立即下载