package com.sys.service; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import com.sys.model.SysUser; /* * 2014.07.01 * */ public class CookieUtil {/* //保存cookie时的cookieName private final static String cookieDomainName = "caibadmin"; //加密cookie时的网站自定码 private final static String webKey = "123456"; //设置cookie有效期是两个星期,根据需要自定义 private final static long cookieMaxAge = 60 * 60 * 24 * 7 * 2; //保存Cookie到客户端------------------------------------------------------------------------- //在CheckLogonServlet.java中被调用 //传递进来的user对象中封装了在登陆时填写的用户名与密码 public static void saveCookie(SysUser user, HttpServletResponse response) { //cookie的有效期 long validTime = System.currentTimeMillis() + (cookieMaxAge * 5000); //MD5加密用户详细信息 String cookieValueWithMd5 =getMD5(user.getUserName() + ":" + user.getPassword() + ":" + validTime + ":" + webKey); //将要被保存的完整的Cookie值 String cookieValue = user.getUserName() + ":" + validTime + ":" + cookieValueWithMd5; //再一次对Cookie的值进行BASE64编码 String cookieValueBase64 = new String(Base64.encode(cookieValue.getBytes())); //开始保存Cookie Cookie cookie = new Cookie(cookieDomainName, cookieValueBase64); //存两年(这个值应该大于或等于validTime) cookie.setMaxAge((int)cookieMaxAge); //cookie有效路径是网站根目录 cookie.setPath("/caibadmin"); //向客户端写入 response.addCookie(cookie); } //读取Cookie,自动完成登陆操作---------------------------------------------------------------- //在Filter程序中调用该方法,见AutoLogonFilter.java public static void readCookieAndLogon(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException,UnsupportedEncodingException{ //根据cookieName取cookieValue Cookie cookies[] = request.getCookies(); String cookieValue = null; if(cookies!=null){ for(int i=0;i> 4, 16)); sb.append(Character.forDigit(buffer[i] & 0x0f, 16)); } return sb.toString(); } */}