程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp開發網站使用cookie的一點經驗

jsp開發網站使用cookie的一點經驗

編輯:關於JSP

在開發網站應用程序的過程中,使用cookie記錄用戶的一些信息是比較常用的一種方法,而cookie的使用也非常簡單。如果我們在jsp(SUN企業級應用的首選)程序中希望得到cookie的值,只需要使用HttpRequest.getCookies()即可得到所有cookie的值,而把值寫入客戶端的cookie文件也非常容易,是需要創建一個cookie,然後調用HttpReponse.addCookie(Cookie
c)即可。但是我們在使用過程中往往會忽略一個問題,就是如果在一個頁面中多次寫一個cookie,那麼結果如何呢

我們現在看一下下面兩個頁面的代碼,
test.jsp(SUN企業級應用的首選)代碼如下:
<%
      Cookie c = new Cookie("test_cookie_name","test_cookie_value");
      response.addCookie(c);
      Cookie c1 = new Cookie("test_cookie_name","test_cookie_value_new");
      response.addCookie(c1);
%>
<a href="test1.jsp(SUN企業級應用的首選)">show cookie value</a>

test1.jsp(SUN企業級應用的首選)代碼如下:
<%
      Cookie c = new Cookie("test_cookie_name","test_cookie_value");
      response.addCookie(c);
      Cookie c1 = new Cookie("test_cookie_name","test_cookie_value_new");
      response.addCookie(c1);
      Cookie c2 = new Cookie("test_cookie_name1","test_cookie_value1");
      response.addCookie(c2);
      Cookie[] cs = request.getCookies();
      for(int i=0;i<cs.length;i++){
              if(cs[i].getName().equals("test_cookie_name1")){
                      cs[i].setValue("test_cookie_value1_new");
                      response.addCookie(c2);
                      break;
              }
      }

%>
<a href="test1.jsp(SUN企業級應用的首選)">show cookie value</a>

測試結果還是證明這種做法不能解決我們遇到的問題,test_cookie_name1的值仍是test_cookie_value1,而不是test_cookie_value1_new,其實我們仔細想一下就可以知道,這個解決方案是行不通的。因為我們知道,對於一個頁面中的request和response,是一次http請求產生的,request是http請求中的所有參數,因此包含了發出這次http請求時cookie的值,而response是對於這次http請求web
application產生的反應,所以它可以寫cookie的值,這樣看來,request得到的cookie的值,和response要寫的cookie的值可以說是完全不同的,簡單地說request得到的cookie的值是在這次http請求之前的cookie的值,而response要寫得值是這次http請求之後的cookie的值。所以上面的解決方案是無法行得通的。

而我現在還沒有發現有什麼好的解決方案能夠是的cookie記錄下我們最後一次寫入的值,因此對於這個問題我們只能在代碼中做到,對於每個http請求,對於每個cookie的值,只寫一次,從而保證cookie的正確性。版權所有:idilent 網站轉載請注明作者 其他轉載方式請與作者聯系([email protected])。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved