实现访问数据库的DBServlet类

DBServlet有3个功能:

  1. 通过数据库连接池创建一个Connection对象。这个功能在servlet方法中完成。
  2. 执行SQL。如果所执行的SQL是select语句,就返回Result对象,否则返回null。这个功能通过execSQL方法完成。
  3. 核对验证码。这个功能通过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 {
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值