자바 쿠키 는 사용자 계 정 정보 로 컬 저장 을 실현 합 니 다.
package cn.itcast.util;
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 cn.itcast.bean.User;
import cn.itcast.dao.UserDAO;
import cn.itcast.factory.DaoImplFactory;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
/* * 2007.09.21 by lyhapple * */
public class CookieUtil {
// cookie cookieName
private final static String cookieDomainName = “cn.itcast”;
// cookie
private final static String webKey = “itcast”;
// cookie ,
private final static long cookieMaxAge = 60 * 60 * 24 * 7 * 2;
// Cookie -------------------------------------------------------------------------------------------------------- // CheckLogonServlet.java
// user
public static void saveCookie(User user, HttpServletResponse response) {
//cookie
long validTime = System.currentTimeMillis() + (cookieMaxAge * 1000);
//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(60 * 60 * 24 * 365 * 2);
//cookie
cookie.setPath("/");
//
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
if (cookieDomainName.equals(cookies[i].getName())) {
cookieValue = cookies[i].getValue();
break;
} }
}
// cookieValue , ,
if(cookieValue==null){
return;
}
// cookieValue ,
// CookieValue Base64
String cookieValueAfterDecode = new String (Base64.decode(cookieValue),"utf-8");
// , , 3,
String cookieValues[] = cookieValueAfterDecode.split(":");
if(cookieValues.length!=3){
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println(" ...");
out.close();
return;
}
// , Cookie
long validTimeInCookie = new Long(cookieValues[1]);
if(validTimeInCookie < System.currentTimeMillis()){
// Cookie
clearCookie(response);
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println(""); Cookie ,
out.close();
return;
}
// cookie , ,
String username = cookieValues[0];
//
UserDAO ud = DaoImplFactory.getInstance();
User user = ud.selectUserByUsername(username);
// user , , + + + webSiteKey MD5
if(user!=null){
String md5ValueInCookie = cookieValues[2];
String md5ValueFromUser =getMD5(user.getUserName() + ":" + user.getPassword() + ":" + validTimeInCookie + ":" + webKey);
// Cookie MD5 , , Session, ,
if(md5ValueFromUser.equals(md5ValueInCookie)){
HttpSession session = request.getSession(true);
session.setAttribute("user", user);
chain.doFilter(request, response);
}
}
else
{
//
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("cookie !");
out.close();
return;
}
}
// , Cookie, ------------------------------------------------------------
public static void clearCookie( HttpServletResponse response){
Cookie cookie = new Cookie(cookieDomainName, null);
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);
}
// Cookie MD5 ----------------------------------------------------------------------------
public static String getMD5(String value) {
String result = null;
try{
byte[] valueByte = value.getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(valueByte);
result = toHex(md.digest());
} catch (NoSuchAlgorithmException e2)
{
e1.printStackTrace();
}
return result;
}
//
private static String toHex(byte[] buffer){
StringBuffer sb = new StringBuffer(buffer.length * 2);
for (int i = 0; i < buffer.length; i++){
sb.append(Character.forDigit((buffer[i] & 0xf0) >> 4, 16));
sb.append(Character.forDigit(buffer[i] & 0x0f, 16));
}
return sb.toString();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.