一、AJAX简介
1、ajax:Asynchronous JavaScript And XML
指异步JavaScript 及XML
2、一种日渐流行的WEB编程方式
Better、Faster、User-Friendly
3、不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术,是基于JavaScript、XML、HTML、CSS新用法
4、定义者给出的定义:
·基于标准的表示技术,使用XHTML和CSS
·动态显示和交互技术,使用Document Object Model
·数据交换和操作技术,使用XML和XSLT
·异步数据获取技术,使用XMLHttpRequest
·而JavaScript将以上都结合在一起
5、AJAX=DHTML+XHR
二、AJAX交互模型
1、classic web application model
2、Ajax web application model
三、AJAX编码步骤
1、创建XmlHttpRequest对象
获取Ajax对象
var xhr=null;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Micorsoft.XMLHttp");
}
2、注册状态监控回调函数
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
// 交互成功时执行的代码
}
}
};
3、建立与服务器的异步连接
使用Ajax对象调用open("请求方式","请求路径","是否为异步")
4、发出异步请求
xhr.send(参数);
注意:若为post提交,则必须设置请求头消息:
setRequestHeader("content-type","application/x-www-form-urlencoded");
采用application/x-www-form-urlencoded的POST数据和url中传参只是形式不同,本质都是传递参数。
四、jQuery实现Ajax
1.使用一个HTTP GET请求从服务器加载数据
$.get( url [, data ] [, success ] )
2.使用一个HTTP POST 请求从服务器加载数据
$.post( url [, data ] [, success ] )
3.执行一个异步的HTTP(Ajax)的请求
$.ajax( [settings ] )
五、数据库连接池
1、概念:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大 空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
TIP:使用数据库连接池优化程序性能
Tip:使用数据库连接池优化程序性能
编写一个基本的连接池实现连接复用
Tip:数据库连接池核心代码
使用动态代理技术构建连接池中的connection
proxyConn = (Connection) Proxy.newProxyInstance(this.getClass()
.getClassLoader(), conn.getClass().getInterfaces(),
new InvocationHandler() {
//此处为内部类,当close方法被调用时将conn还回池中,其它方法直接执行
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
if (method.getName().equals("close")) {
pool.addLast(conn);
return null;
}
return method.invoke(conn, args);
}
});
Tip:开源数据库连接池
● 现在很多WEB服务器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现。
● 也有一些开源组织提供了数据源的独立实现:
DBCP 数据库连接池
C3P0 数据库连接池
● 实际应用时不需要编写连接数据库代码,直接从数据源获得数据库的连接。程序员编程时也应尽量使用这些数据源的实现,以提升程序的数据库访问性能。
Tip:DBCP数据源
● DBCP 是 Apache 软件基金组织下的开源连接池实现,使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件:
Commons-dbcp.jar:连接池的实现
Commons-pool.jar:连接池实现的依赖库
● Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。
Tip:配置Tomcat数据源
查看Tomcat文档,示例代码:
<Context>
<Resource name="jdbc/datasource" auth="Container"
type="javax.sql.DataSource" username="root" password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jdbc"
maxActive="8" maxIdle="4"/>
</Context>
在Servlet中打印一下:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
dataSource = (DataSource)envCtx.lookup("jdbc/datasource");
特别提醒:此种配置下,驱动jar文件需放置在tomcat的lib下
Tip:JNDI技术简介
● NDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.naming包,
● 这套API的主要作用在于:它可以把Java对象放在一个容器中(JNDI容器),并为容器中的java对象取一个名称,以后程序想获得Java对象,只需通过名称检索即可。
● 其核心API为Context,它代表JNDI容器,其lookup方法为检索容器中对应名称的对象。