天天看點

java sessionid放入cookie_Java操作Session與Cookie

轉自http://www.cnblogs.com/guanghe/p/6011065.html

1,Java操作Session

Java操作Session非常簡單,步驟如下

1.1,在servlet中通過request擷取session

HttpSession session = request.getSession(true);

true代表目前沒有建立session則建立一個session,并傳回這個session

false代表目前沒有session,不做操作,傳回null

預設為true

java sessionid放入cookie_Java操作Session與Cookie

1.2,利用session對象設定屬性或删除屬性

添加

session.setAttribute("username", username);

session.setMaxInactiveInterval(60 * 30);  //預設為秒

删除

session.removeAttribute("username")

2,Java操作Cookie

Java操作Cookie就有些需要注意的地方了

為此,建立一個操作cookie的工具類

CookieUtil.java

java sessionid放入cookie_Java操作Session與Cookie

1 package org.guangsoft.util;

2

3 import javax.servlet.http.Cookie;

4 import javax.servlet.http.HttpServletRequest;

5 import javax.servlet.http.HttpServletResponse;

6

7

11 public class CookieUtil

12 {

13

23 public static void addCookie(HttpServletResponse response,

24 String key, String value, int maxAge, String path, String domain)

25 {

26 Cookie cookie = new Cookie(key, value);

27 cookie.setPath(path);

28 cookie.setDomain(domain);

29 if (maxAge > 0)

30 {

31 cookie.setMaxAge(maxAge);

32 }

33 response.addCookie(cookie);

34 }

35

36

43 public static Cookie getCookieByName(HttpServletRequest request, String name)

44 {

45 Cookie cookies[] = request.getCookies();

46 if (cookies != null)

47 {

48 for (int i = 0; i < cookies.length; i++)

49 {

50 Cookie cookie = cookies[i];

51 if (name.equals(cookie.getName()))

52 {

53 return cookie;

54 }

55 }

56 }

57 return null;

58 }

59 }

java sessionid放入cookie_Java操作Session與Cookie

調用代碼:

UserService.java

java sessionid放入cookie_Java操作Session與Cookie

1 public boolean setAutoLog(HttpServletRequest request,HttpServletResponse response, String username)

2 {

3 CookieUtil.addCookie(response, "username", username, 3600 * 24 * 3, "/manage/userServlet.action", "localhost");

4 return true;

5 }

6

7 public boolean logout(HttpServletRequest request,HttpServletResponse response, String username)

8 {

9 CookieUtil.addCookie(response,"username","",0, "/manage/userServlet.action", "localhost");

10 return true;

11 }

java sessionid放入cookie_Java操作Session與Cookie

嚴重提醒:删除Cookie時,隻設定maxAge=0将不能夠從浏覽器中删除cookie,

* 因為一個Cookie應當屬于一個path與domain,是以删除時,Cookie的這兩個屬性也必須設定。

* 誤區:沒有重視用戶端發送到伺服器端的cookie的path與domain值為空這個問題。

* 因為在登陸系統時,設定了Cookie的path與domain屬性的值,就誤認為每次用戶端請求時,都會把Cookie的

* 這兩個屬性也送出到伺服器端,但系統并沒有把path與domain送出到伺服器端(送出過來的隻有Cookie的key,value值)。

java sessionid放入cookie_Java操作Session與Cookie