9.1什么是 JDBC
JDBC的全称是Java数据库连接( Java Database Connectivity),它是一套用于执行S L语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、更新、新增和删除的操作。
9.2 JDBC 常用的API
在开发JDBC程序前,首先了解一下JDBC常用的API。JDBC API主要位于java.sql包中,该包定义了一系列访问数据库的接口和类。本节中,将对该包内常用的接口和类进行详细讲解。
9.2.1 Driver 接口
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中(这里指MySQL驱动JAR包)。
9.2.2 DriverManager 类
DriverManager类用于加载JDBC驱动并且创建与数据库的连接。在DriverManager类中,定义了两个比较重要的静态方法。
9.2.3Connection接口
Connection接口代表Java程序和数据库的连接,只有获得该连接对象后才能访问数据库,并操作数据表。在Cnnetion接口中,定义了一系列方法。
9.2.4 Statement 接口
Statement接口用于执行静态的SQL语句,并返回一个结果对象,该接口的对象通过Connection实例的createStatement()方法获得。利用该对象把静态的SQL语句发送到数据库编译执行,然后返回数据库的处理结果。在Statement接口中,提供了3个常用的执行SQL语句的方法
9.2.5 PreparedStatement 接口
Statement接口封装了JDBC执行SQL语句的方法,可以完成Java程序执行SQL语句的操作。然而,在实际开发过程中往往需要将程序中的变量作为SQL语句的查询条件,而使用Statement接口操作这些SQL语句会过于繁琐,并且存在安全方面的问题。针对这-问题,JDBCAPI提供了扩展的PreparedStatement接口。
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数SQL语句的执行操作,应用该接口中的SQL语句可以使用占位符“?”来代替其参数,用方通过sex0方法为soL语句的参数赋值。Paeaiediatement接口中提供了一些常方法。
9.2.6 ResultSet 接口
ResutSset 接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。在ResultSet接口内部有一一个指向表格数据行的游标 (或指针), ResultSet 对象初始化时,游标在表格的第1行之前,调用nex(方法可将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常使用nex()方法作为WHILE循环的条件来迭代ResultSet结果集。
Listener监听器-----Servlet事件监听器概述:
servlet监听器是servlet规范中定义的一种特殊类,用于监听servletContext(application)、httpsession(session)、servletRequest(request)等作用域对象的创建与销毁事件,以及监听这些作用域对象中属性发生修改的事件;
监听对象:servletContext(application)、httpsession(session)、servletRequest(request)
监听内容:监听对象的创建,销毁,属性改变事件
request监听器:ServletRequestListener
requestDestroyed(ServletRequestEvent event);//销毁request的时候触发此事件,方法内部可以通过形参获取当前监听的request
requestInitialized(ServletRequestEvent event);//创建request的时候触发此事件,方法内部可以通过形参获取当前监听的request
其他对象监听器类似:HttpSessionListener,ServletContextListener
Servlet事件监听器
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class HttpSessionListenerImpl implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
ServletContext app = event.getSession().getServletContext();
int count = Integer.parseInt(app.getAttribute("onLineCount").toString());
count++;
app.setAttribute("onLineCount", count);
int maxOnLineCount = Integer.parseInt(app.getAttribute("maxOnLineCount").toString());
if (count > maxOnLineCount) {
//记录最多人数是多少
app.setAttribute("maxOnLineCount", count);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//记录在那个时刻达到上限
app.setAttribute("date", df.format(new Date()));
}
}
//session注销、超时时候调用,停止tomcat不会调用
public void sessionDestroyed(HttpSessionEvent event) {
ServletContext app = event.getSession().getServletContext();
int count = Integer.parseInt(app.getAttribute("onLineCount").toString());
count--;
app.setAttribute("onLineCount", count);
}
}
webAppRootKey project.root log4jConfigLocation classpath:log4j.properties log4jRefreshInterval 60000 org.springframework.web.util.Log4jConfigListener