4

今日、私はこの種のコードを試しました...ログインした後、FFブラウザーですべてのCookieを削除し、Webページを更新してNPEを取得しました:Pだから、「復元」などの簡単な方法があると考えていましたクライアントで Cookie が手動で削除された場合、または特に一部のデータ (セッション属性に関連する) がまだサーブレット コンテキスト スコープ内にある場合、この状況で最も最適な方法は何ですか?

たとえば、セッションにいくつかのIDがある場合

session.setAttribute("id","hello world");

...そして、私は次のようなコードを持っています

String userID=null;
                Cookie []cookies=req.getCookies();

                    for(Cookie cookie:cookies)
                    {
                        if(cookie.getName().equals("id")){userID=cookie.getValue();}
                    }


String id=session.getAttribute("id");
User user=((MyUsers)context.getAttribute("Users")).getUser(id);

次の場合、ユーザーを削除するにはどうすればよいですか (重複を避けるため)

  • A)手動で削除したため、Cookie はありません
  • B) session.getAttribute("id");NPE をスローしますか?

ありがとう

4

1 に答える 1

0

サーブレット環境では、URL の書き換えまたは Cookie を使用してユーザー セッションを追跡します (これは HTTP のものです)。ブラウザの Cookie を削除すると、(おそらく) ユーザー ブラウザと Web アプリケーション間のすべての接続が失われることになります。

ユーザーを覚えておきたい場合は、Cookie が必要です。取得している NPE は、Cookie の不在 (およびプログラム内のビットの欠落) を反映したものにすぎません。

そのため、Cookie および/またはセッションが存在するかどうかを確認する必要があります (NPE を検証します)。それらのいずれも見つからない場合は、ユーザーを追跡できません (ログイン ページにリダイレクトする必要があります。適用されます)。

于 2013-11-13T22:31:02.057 に答える