2012-04-13 40 views
6

我想爲我的會話生成唯一的會話ID。所以我用UUID。在這裏我也如何將UUID值轉換爲字符串

if (session == null) { 

    session = httpServletRequest.getSession(true); 
    session.setAttribute("logedin", "0"); 

    if (!httpServletRequest.isRequestedSessionIdFromCookie()) { 

     UUID sessionID = UUID.randomUUID(); 

     Cookie sessionCookie = new Cookie("JSESSIONID", "sessionID"); //problem 

} 

Cookie的構造函數接受兩個字符串,如何將我的UUID轉換爲字符串,所以它得到UUID值,它是獨一無二的? 謝謝

+1

servlet容器已經嘗試爲你生成一個cookie。用另一個值覆蓋它會阻止servlet容器找到你的會話。 – gawi 2012-04-13 13:05:12

+0

嗯,謝謝。這是我不知道的非常非常重要的一點。非常感謝。其實我想的就是這個。會話跟蹤API生成名爲'JSESSIONID'的ID,所以我認爲我只是改變了值。但是你說變化的值會影響默認的會話跟蹤..... hhmm好吧,我不改變這個值,但是我想問一下,我可以在默認的JSESSIONID上設置setMaxAge()嗎?像獲取默認的JSESSION cookie一樣,設置其maxAge,然後使用addCookie。我可以那樣做嗎?謝謝 – Basit 2012-04-13 13:49:51

+0

如果您想更改最大年齡以控制會話何時到期,則應該在web.xml中設置session-config> session-timeout元素。請注意,JSESSIONID cookie不一定包含_only_會話ID。在某些容器上,在會話ID之前添加附加信息。有關示例,請參閱[本](https://www.ibm.com/developerworks/mydeveloperworks/blogs/Dougclectica/entry)/ websphere_session_ids22?lang = en。如果你經常做東西,你不應該改變JSESSIONID cookie。 – gawi 2012-04-16 01:20:27

回答

24

這將您的唯一身份會話ID轉換成字符串

String suuid = UUID.randomUUID().toString(); 
+0

Oooooops ...謝謝 :) – Basit 2012-04-13 13:43:03

0

你可以叫上所有的Java對象toString() ...

+7

不是所有的Java對象都會得到想要的行爲。在這種情況下,它可以工作,因爲'toString()'方法被覆蓋:http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html#toString() – logoff 2013-05-09 13:14:08