Java学习--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
- 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 checkRegisterName(String regName){
- boolean flag=false;
- Connection conn=null;
- PreparedStatement ps=null;
- ResultSet rs=null;
- try {
- conn=ds.getConnection();
- String sql="select * from user where username=?";
- ps=conn.prepareStatement(sql);
- ps.setString(1,regName);
- rs=ps.executeQuery();
- if(rs.next()){
- flag=true; // 如果已经存在此用户名,则改变flag为true
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }finally{
- try {
- rs.close();
- ps.close();
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- return flag;
- }
- }
CheckNameServlet.java
- package servlet;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import util.DBUtil;
- @WebServlet(name="CheckNameServlet",urlPatterns={"/checkServlet"})
- public class CheckNameServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- doPost(req,resp);
- }
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- resp.setHeader("content-type","application/x-www-form-urlencoded");
- resp.setCharacterEncoding("utf-8");
- PrintWriter pw=resp.getWriter();
- String regName=req.getParameter("registerName");
- System.out.println("后台接收到的注册名为:"+regName);
- boolean flag=DBUtil.checkRegisterName(regName);
- if(flag){
- pw.println("sorry,该用户名已被注册,请选择其他注册名!");
- }else{
- pw.println("恭喜,可以使用该注册名~~~");
- }
- pw.flush();
- pw.close();
- }
- }
register.jsp
- %@ 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("get","/AjaxProject/checkServlet?registerName="+regName,true);
- // 绑定onreadystatechange事件
- xhr.onreadystatechange=function(){
- if(xhr.readyState==4){
- if(xhr.st<span style="color:#FF0000;"><span style="color:#000000;">atus=</span></span>=200){
- var txt=xhr.responseText; // 获取后台传来的响应文本
- document.getElementById("msg").innerHTML=txt;
- }
- }
- };
- xhr.send(null); // 发送请求
- }
- </script>
- </head>
- <body>
- <form action="${pageContext.servletContext.contextPath}/registerServlet" method="post">
- 注册用户名:<input type="text" name="regName" onblur="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(){
- <strong><span style="color:#660000;">$.get("/AjaxProject/checkServlet",{"registerName":$("#registername").val()},
- function(data){
- $("#msg").html(data);
- });</span></strong>
- });
- });
- </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>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
js知识点清单
js知识点清单 javaweb的js部分 自己总结的知识点清单,如果转发请注明出处,尊重原创,虽然写的不怎么样吧,哈哈 ,内容中有些时候是不连贯的,那是本人做的笔记,或者写的感想,不影响阅读。有错误的地方还请批评指正。 Js部分 Document.write(“ ”) 可以往HTML里面写文字或者标签也可以 对大小写敏感 Alert(内容) 弹出一个对话框 Js事件 1.事件 事件是可以被javascript检测到的行为 2.主要事件 属性 描述 onClick 单击事件 onMouseOver 鼠标胫骨事件 onMouseOut 鼠标移出事件 onChange 文本内容改变事件 onSelect 文本框选中事件 onFocus 光标聚集事件 onBlur 移开光标事件 onload 网页加载事件 onUnload 关闭网页事件 js的DOM对象 1.DOM简介 DOM操作HTML 1) JavaScript能改变页面中的所有HTML元素 2) JavaScript能够改变页面中的所有HTML属性 3) JavaScript能够改变页面中的所有css样式 4) JavaScript能...
- 下一篇
JVM活学活用——优化springboot
介绍 在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢? 1. 方便微服务部署。 2. 方便项目启动,不需要下载Tomcat或者Jetty 针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点 线程数 超时时间 jvm优化 针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求, 而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量的请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的 一旦网络不稳定,宁愿丢包也不愿意把机器压垮。 jvm优化一般来说没有太多场景,无非就是加大初始的堆,和最大限制堆,当然也不是无限增大,根据的情况进快速开始 在spring boot配置文件中application.yml,添加以下配置 server: tomcat: min-spare-threads: 20 max-threads: 100 connection-timeout: 5000 这块...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路