2011-04-11 12 views
3

JAVAサーバーに行われたAJAX呼び出しでセッションにアクセスする方法はありますか?ajaxの呼び出しでIDでセッションを取得

サーバー上のrequestオブジェクトには、sessioncookiesの両方のプロパティーがあります。NULLです。

私は、パラメータとしてセッションIDものの渡すことができますが、どのように私はIDによってセッションにアクセスすることができますか? session.getSession(true);は明らかに別のIDで、新しいセッションを返しながら、session.getSession(false);戻りnullを使用して

編集

答えて

3

これに対処するための最良の方法を追加することで、「JSESSIONID =」。例えば、JSPで:

<script type="text/javascript"> 
... 
    xhr.open("GET", url + ";jsessionid=<%=pageContext.getSession().getId()%>"); 
... 
</script> 

ライン:

xhr.open("GET", url + ";jsessionid=<%=pageContext.getSession().getId()%>"); 

は次のようにレンダリングされる:私は `使用session.getSession(true)の場合

xhr.open("GET", url + ";jsessionid=6EBA4F94838796DC6D653DCA1DD06373"); 
+0

答えをありがとう、私は今、次の問題があります:文字列は "; jsessionid = <%= pageContext.session.id%>"セッションIDを計算する代わりに "; jsessionid = __sessionid__ " –

+2

実際には、スクリプレットは<%= pageContext.getSession()。getId()%>である必要があります。 –

+0

更新いただきありがとうございます –

0

セッションがないようですね!

AJAXスクリプトを含むロードが、セッションがサーバー上に作成されたときに確認してください。

session.getSession(true); 

これがCookieとして保存されている場合、AJAXコールは起動時にサーバーに送信します。

+0

;'新しいセッション別のIDで作成された場合、私は訪問者のためにサーバー上の既存のセッションを復元したいと思います。おそらく、私はパラメータとしてセッションIDを渡す場合に役立ちます。 –

0

セッションにアクセスするには、セッションIDは必要ありません。これは、あなたのサーブレットコンテナによって裏返しに行われます。 particluar要求のためのセッションを取得するには、すべてを行う必要がある:requestはあなたHttpServletRequest

HttpSession session = request.getSession(false); 

です。 false argは、「存在しなければセッションを作成しない」という意味です。もちろん、存在しない場合にセッションを作成する場合は、「true」を使用します。 URLの末尾に、

+0

私は自分の質問を編集しました。私はあなたが言ったことをすでにしていましたが、残念ながら、それは働いていません。 –

関連する問題