1.用到的常量
Java代码
package com.hydom.util;
public final class CommonConstants {
// 系统 session 用户
public final static String SESSION_USER = "session_user";
/** 保存在浏览器中cookie的邮箱名称名 */
public final static String BROWSER_COOKIE_EMAIL = "HKPhotoUserEmail";
/** 保存在浏览器中cookie的邮箱密码名 */
public final static String BROWSER_COOKIE_PASSWORD = "HKPhotoUserPassword";
/** 保存在浏览器中cookie的最大时间15天 */
public final static int BROWSER_COOKIE_MAX_AGE = 15*24*60*60;
/** 保存在浏览器中cookie的自动登录状态名 */
public final static String BROWSER_COOKIE_AUTO_STATUS_NAME = "HKPhotoAutoLoginStatus";
/** 保存在浏览器中cookie的退出登录名 */
public final static String BROWSER_COOKIE_LOGIN_OUT_NAME = "HKPhotoLoginOut";
}
2.过滤器
Java代码
package com.hydom.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hydom.entity.User;
import com.hydom.service.IUserService;
import com.hydom.util.CommonConstants;
import com.hydom.util.pico.PicoContainer;
/**
*功能:首先检测session中是否有user,如果没有再检测cookie中是否有对应的邮箱和密码
* 如果有那么就查出该user放进session中
* 如果都没有那么就doFilter()
*
* @author ocaicai@yeah.net
* @date 2011-9-22
* @version 1.0
*
*/
public class CookieLoginFilter extends BaseFilter {
// 获取数据层示例
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
Object object = request.getSession().getAttribute(
CommonConstants.SESSION_USER);
User cookieUser = null;
String email = null;
String password = null;
String autoStatus = null;
if (object == null) {
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
// System.out.println("cookies.length=" + cookies.length);
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
// 判断Cookie的邮箱名是否等于"HKPhotoUserEmail"
if (CommonConstants.BROWSER_COOKIE_EMAIL.equals(cookie
.getName())) {
email = cookie.getValue().trim();
}
// 判断Cookie的密码名是否等于"HKPhotoUserPassword"
if (CommonConstants.BROWSER_COOKIE_PASSWORD.equals(cookie
.getName())) {
password = cookie.getValue().trim();
}
// 判断Cookie的自动登录状态名是否等于"HKPhotoAutoLoginStatus"
if (CommonConstants.BROWSER_COOKIE_AUTO_STATUS_NAME
.equals(cookie.getName())) {
autoStatus = cookie.getValue().trim();
}
}
if (autoStatus!=null&&autoStatus.equals("1")) {
if (email != nu