1

私はGAE/Jの開発にかなり慣れておらず、GAESeesionを使おうとしています。どういうわけか、セッションに保存されている値を取得しようとすると、nullのみが返されます。これが私が持っているものです。

String変数をsessionに設定しているloginservletがあります。

HttpSession hs=req.getSession(true);
if(hs.isNew()){
hs.setAttribute("logininfo", "mylogininfo");
}

次に、JSPページ内でこの情報を次のように取得しようとします-

<%
HttpSession hs = request.getSession(false);
String logininfo = (String) hs.getAttribute("logininfo");
%>

私は常に「logininfo」文字列をnullとして取得しています-理由はわかりません。

appengine-web.xml内でセッションを有効にしました

<sessions-enabled>true</sessions-enabled>

上記は私が実行しようとしている試用例です。Facebookログイン用にサーブレットからJSPページに「accessToken」を渡したいのです。

4

1 に答える 1

1

ページがどの順序で呼び出されるかはわかりませんが、最も可能性の高い原因はisNew()メソッドの使用です。

サーバーが Cookie をユーザーのブラウザーに送信すると、セッションが確立されます。これは、許可されているかどうかに関係なく、任意のページの最初の要求で発生します。

そのため、isNew()ユーザーがまだ Cookie を受け取っていない間に、いずれかのページへの最初のリクエストにのみ当てはまります。連続したリクエスト (数日後であってもCookie Expiration:、GAE 管理者の設定によって異なります) では、false になります。

于 2012-05-23T04:45:37.670 に答える