过滤器自动登录

本文介绍了使用Java实现自动登录过滤器的步骤,包括创建数据库、定义JavaBean、配置数据源、处理Cookie、编写过滤器及相关的Service和DAO实现。通过这个过滤器,可以实现在用户登录后自动保存Cookie,下次访问时自动登录的功能。
摘要由CSDN通过智能技术生成

01-数据库
create database day_autologin;
use day_autologin;
create table user(
id int primary key auto_increment,
username varchar(20),
password varchar(20)
);
insert into user values(null,‘tom’,‘123’);

02-JavaBean: User.java

package com.hngy.domain;

import java.io.Serializable;

public class User implements Serializable {
private static final long serialVersionUID = 1L;

private int id;
private String username;
private String password;

// setter和getter方法...

}

03-工具类:DataSourceUtils.java

package com.hngy.utils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataSourceUtils {
private static ComboPooledDataSource ds=new ComboPooledDataSource();
private static ThreadLocal tl=new ThreadLocal<>();

/**
 * 获取数据源
 * @return 连接池
 */
public static DataSource getDataSource(){
	return ds;
}

/**
 * 从当前线程上获取连接
 * @return 连接
 * @throws SQLException
 */
public static Connection getConnection() throws SQLException{
	Connection conn = tl.get();
	if(conn==null){
		//第一次获取 创建一个连接 和当前的线程绑定
		 conn=ds.getConnection();
		 
		 //绑定
		 tl.set(conn);
	}
	return conn;
}

/**
 * 释放资源
 * 
 * @param conn
 *            连接
 * @param st
 *            语句执行者
 * @param rs
 *            结果集
 */
public static void closeResource(Connection conn, Statement st, ResultSet rs) {
	closeResource(st, rs);
	closeConn(conn);
}
 
public static void closeResource(Statement st, ResultSet rs) {
		closeResultSet(rs);
		closeStatement(st);
}

/**
 * 释放连接
 * 
 * @param conn
 *            连接
 */
public static void closeConn(Connection conn) {
	if (conn != null) {
		try {
			conn.close();
			//和当前的线程解绑
			tl.remove();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		conn = null;
	}

}

/**
 * 释放语句执行者
 * 
 * @param st
 *            语句执行者
 */
public static void closeStatement(Statement st) {
	if (st != null) {
		try {
			st.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		st = null;
	}

}

/**
 * 释放结果集
 * 
 * @param rs
 *            结果集
 */
public static void closeResultSet(ResultSet rs) {
	if (rs != null) {
		try {
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		rs = null;
	}

}

/**
 * 开启事务
 * @throws SQLException
 */
public s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值