1

私はJavaEEを初めて使用します。ユーザーがログインする必要があるサイトがあり、ユーザーがログインした後、ユーザーに自分のアイテム(ショッピングカートなど)を表示してもらいたい。

つまり、それを達成するにはセッションを使用する必要があります。しかし、どうすれば複数のセッションを処理できますか?

たとえば、複数のユーザーがシステムと同じサーブレットにログインしますか?ただし、1つのサーブレットに複数のセッションを保持できますか?それぞれの記録をつけていますか?それはどのように機能しますか?

誰かが例を挙げてもらえますか?

4

3 に答える 3

10

サーブレットHttpServletRequestでは、メソッドを提供するアクセス権がありますgetSession()。このメソッドは、ユーザーごとに異なるセッションオブジェクト(基本的にはKey-Valueマップ)を返します。

そのマップに何か(ショッピングカートなど)を入れた場合、後でそれを取得できますが、同じユーザーがアプリケーションに再度アクセスした場合に限ります(必ずしも同じサーブレットである必要はありません)。

public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

    HttpSession session = request.getSession();
    session.getAttribute("cart");
    //...
    session.setAttribute("cart", whateverYouWant);

セッションはサーブレットコンテナで維持され、セッションID(通常はCookie)で検索されます。自分で何かを実装する必要はありません。

于 2012-07-10T14:13:39.633 に答える
3

はい、できます。サーブレットコンテナはそれらを追跡するので、自分でその簿記をする必要はありません。オブジェクトは、サーブレットコードのSessionから取得できます。HttpServletRequestコードは一度に1つのリクエストにのみ関係する必要があるため、通常、複数のセッションを処理するのにそれほど苦労することはありません。

于 2012-07-10T14:13:19.517 に答える
0

サーブレットにログインする複数のユーザーを処理するには、ログインごとに次のようにセッションを作成します。

HttpSession session = request.getSession();

public HttpSession getSession() このリクエストに関連付けられている現在のセッションを返します。リクエストにセッションがない場合は、セッションを作成します。

各セッションは、ユーザーを一意に識別します。

ここで、ユーザーがデータベース内のデータを変更したい場合は、セッションを作成した後、データベース内のユーザーを一意に識別できる情報を使用して、そのセッションの属性を設定します。たとえば、email_idは次のようになります。

session.setAttribute("id",email_id of user);

この属性は、後で別のサーブレット/JSPで次のように取得できます。

String email_id = session.getAttribute("id");

この属性は、データベース内のデータを更新するため、または他のことを行うためにサーバーに要求を送信したユーザーを識別するのに役立ちます。セッションに関連するその他の方法については、次のリンクを参照してください: http ://www.javatpoint.com/http-session-in-session-tracking

于 2016-02-21T06:59:09.643 に答える