導航:首頁 > 編程語言 > java保存cookie

java保存cookie

發布時間:2024-07-29 01:54:45

『壹』 java中的Cookie的意思、用途!

cookie首先並不是java的概念,是web編程里一種客戶端存儲數據的方式(通常是加密過的)。

有些數據,不是特別重要,但用戶又經常要用到的,比如:網站用戶的登錄信息、歷史查看記錄等等,這些數據保存在伺服器上會讓伺服器承擔很大的壓力,因此變產生了cookie這樣一種客戶端數據存儲的方式。意思就是說把你個人的一些數據保存在本地,這樣伺服器減少了壓力,並且下次你訪問網站的時候,伺服器會主動去你的機器上讀取這些數據並展現出來。

比較常見的例子,有些網站登錄的時候會有一個「記住登錄狀態」的選擇,選了以後用戶以後再來這個網站會發現不用再登錄了,比如網路知道、貓撲等等;再比如最近優酷、騰訊視頻上的的歷史觀看記錄,不用登錄,就可以記錄你的機器上次看了哪些視頻,看到多少分多少秒了,下次來直接點就能接著看,特別實用~~~~ PS.我最近一直在用,哈哈

cookie雖然有諸多好處,但使用的過程中還是需要注意風險,因為客戶端的不確定性,對安全和隱私要求較高的數據建議還是不要放在cookie里存儲,比如網路游戲賬號密碼信息、電子銀行賬戶信息等等。

最後再說一個實例,當你清除瀏覽器緩存的時候,一般會有選擇是否清除cookie,或者360安全衛士幫助你清除上網痕跡的時候,都會把本地cookie清除掉,這時候你會發現,你很長時間都不用登錄的網站,比如網路知道、貓撲(原諒我經常上的網站就這倆,沒別的例子可舉- -!......),現在都需要重新登錄了,原因就是cookie被清除掉了

一字一句全是手打,望樓主採納~~

『貳』 關於Java里邊session和cookie的問題

伺服器壓力增大,有很多原因,不一定就是Session的事。

所有圖書列表信息,不知這個所有是指庫中存放的所有圖書,還是單指某一個人的所有圖書。如果是庫中的所有圖書,就應放入Application中或者一個靜態的全局變數中,而不是放在session中。

只考慮session的話,可以看看下面的建議:
session中,最佳處理是只放登錄後的人員基本信息,相關信息,再通過基本信息查詢,如果覺得從物理庫中查詢慢,可以採用內存資料庫,緩存不經常改變的信息。

『叄』 java網站開發怎麼實現用戶賬號信息本地保存

看看這個吧!主要是對cookie的操作
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..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();

}

}

閱讀全文

與java保存cookie相關的資料

熱點內容
js用什麼加密 瀏覽:343
androiduc瀏覽器包名 瀏覽:378
wemall小程序源碼 瀏覽:424
從零開始學php光碟下載 瀏覽:667
mac多個php版本 瀏覽:591
資源動漫壓縮包 瀏覽:901
雲伺服器如何做路由器 瀏覽:691
python看後感 瀏覽:173
下載app為什麼顯示購買 瀏覽:789
安卓怎麼把資料一鍵轉移到舊蘋果 瀏覽:609
啟發式演算法matlab 瀏覽:32
安卓手機怎麼和外國人打電話 瀏覽:28
解套app什麼用 瀏覽:995
python賦值方式復合賦值 瀏覽:381
修改linuxlang 瀏覽:17
成熟的app開發需考慮什麼 瀏覽:790
如何將安裝包變成解壓包 瀏覽:342
單片機中的alu是個啥 瀏覽:368
花灑防爆管加密管和軟管 瀏覽:881
龍族幻想同伺服器怎麼一起進跨服 瀏覽:862