2012-04-13 15 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 

} 

をやったクッキーコンストラクタは、それが一意であるUUID値を取得するので、私は私のUUIDを文字列に変換することができますどのように、2つの文字列を受け入れますか? ありがとう

+1

文字列に変換しますあなたのためにクッキーを生成します。別の値で上書きすると、サーブレットコンテナがセッションを検出できなくなります。 – gawi

+0

HHmmmありがとうございます。これは私が気づいていない非常に重要なポイントです。多くのありがとう。実際に私が考えていたのはそれです。セッショントラッキングAPIは名前に「JSESSIONID」というIDを生成するので、値を変更するだけであると考えました。しかし、値を変更すると、デフォルトのセッショントラッキングが妨げられていると言っています.hhmm ok値を変更しませんが、デフォルトのJSESSIONIDでsetMaxAge()を設定することができますか?デフォルトのJSESSIONクッキーを取得するのと同様に、そのmaxAgeを設定してからaddCookieを使用します。それをしてもいいですか?ありがとう – Basit

+0

セッションの有効期限を制御するためにmax-ageを変更する場合は、web.xmlにsession-config> session-timeout要素を設定する必要があります。 JSESSIONIDクッキーには必ずしもセッションIDのみが含まれているわけではありません。一部のコンテナでは、セッションIDの前に追加情報が追加されます。例については、[this](https://www.ibm.com/developerworks/mydeveloperworks/blogs/Dougclectica/entry)/ websphere_session_ids22?lang = enを参照してください。あなたは、通常の作業をしている場合、JSESSIONIDのクッキーを変更する必要はありません。 – gawi

答えて

24

これはあなたのユニークセッションIDは、サーブレットコンテナがすでにしようとしている

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

Oooooops ...ありがとうございました :) – Basit

0

あなたはJavaオブジェクトすべてにtoString()を呼び出すことができます...

+7

すべてのJavaオブジェクトには必要な動作が得られません。このケースでは、 'toString()'メソッドがオーバーライドされているので動作します:http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html#toString() – logoff

関連する問題