DBServlet有3个功能:
- 通过数据库连接池创建一个Connection对象。这个功能在servlet方法中完成。
- 执行SQL。如果所执行的SQL是select语句,就返回Result对象,否则返回null。这个功能通过execSQL方法完成。
- 核对验证码。这个功能通过checkValidationCode方法完成。
实现代码示例:(
注意导入包的问题)
package DBtest;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
public class DBServlet extends HttpServlet {
//声明用于连接数据库的Connection对象
protected Connection connection = null;
//执行各种SQL语句的方法
protected ResultSet execSQL(String sql,Object[] args) throws Exception{
//建立PreparedStatement对象
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//为pStmt对象设置SQL参数值
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i+1, args[i]); //设置SQL参数值
}
preparedStatement.execute(); //执行SQL语句
//返回结果集,如果执行的SQL语句不返回结果集,则返回null
return preparedStatement.getResultSet();
}
//核对用户输入的验证码是否合法
protected boolean checkValidationCade(HttpServletRequest request,String validationCode){
//从HttpSession对象中获得系统随机生成的验证码
String validationCodeSession = (String)request.getSession().getAttribute("validation_code");
//如果获得的验证码为null,说明验证码过期,用户必须刷新客户端页面,以重新获得新的验证码
if (validationCodeSession == null) {
//设置result.jsp需要的结果信息
request.setAttribute("info", "验证码过期");
//设置login.jsp需要的错误信息
request.setAttribute("codeError", "验证码过期");
return false;
}
return true;
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
//如果connection为null,打开数据库连接
if (connection == null) {
//创建上下文对象ctx
Context ctx = new InitialContext();
//获取数据源
DataSource ds = (DataSource) ctx.lookup("自己定义的数据源名称");
connection = ds.getConnection();
}
} catch (Exception e) {
// TODO: handle exception
}
}
public DBServlet() {
super();
}
@Override
public void destroy() {
try {
//如果数据库连接正常,关闭它
if (connection != null) {
connection.close();
}
} catch (Exception e) {
// TODO: handle exception
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void init() throws ServletException {
}
}