サーブレットのセッション

7層モデルのネットワークでは、セッション層は、起動制御し、セッションを終了する方法を定義するトランスポート層の上方に位置しています。7層モデルは、理論的な段階に現在あるが、Webは、そのうちのいくつかのアイデアを借りました。最初のWebブラウザではオフにこれまで一つのセッションとしてカウント1まで開始するサーバーにリクエストを送信します。HTTPプロトコル自体は、Webサービスは1つのセッションでこの要求にそれをするかどうかを知る方法、その後、状態はありませんか?ウェブは、クッキーとセッション2つの技術を提供します。

最初のサーバがリクエストを受信した後、HTTPレスポンスヘッダがSet-Cookie後に、Cookie値を設定し、ブラウザが応答を受信し、ローカルにクッキーを保存します。後続の要求は、その後、HTTPリクエストヘッダ内に設けられている場合Cookieの値は、サーバはこのクッキーに応じてステータス要求を識別する。

クッキー値自体は、例えば、キーと値のペアであります Cookie: name=value;

サーブレットクッキーの使用

サーブレットでは、クッキーを使用して、次のステップ:

  1. Cookieオブジェクトを作成します。 new Cookie(String name, String value)
  2. ブラウザにクッキーを送信 response.addCookie(Cookie)
  3. ブラウザがクッキーの上送信し取得しますrequest.getCookies()リターンすべてのクッキー
  4. クッキーを通過するすべてのクッキーオブジェクトを取得します。
  5. コールCookie.getName()Cookie.getValue()クッキーのキーと値を取得します

次のように注意があります:

  1. 一つは、response.addCookieへの複数の呼び出しを複数のクッキーを返すことができます
  2. ブラウザのデフォルトのクッキーが失敗閉じていますが、クッキーの有効期限を設定することができます

クッキーは、セッションを識別するが、乱用しないように使用することが、クッキーが最初のブラウザに格納されているので、自動的にクローラは、一般的に行わログ行われ、偽造することができ、第二のブラウザクッキーのサイズは、単一のために制限されています一般的に4KB。ブラウザはまた、単一のCookieドメイン名に限定されていると同時に、デフォルトは20です。以来クッキー自体は、メインコースとして少ない材料、一般的には、小さなビスケット材料のようではありません。

セッション

予想通り、一般的に小さなクッキーは、セッション識別子として、セッションの使用がより一般的です。

これらの制限は、セッションはクッキーと比較して、セッションクッキーなし、サーバー側に保存されています。

原則

セッションCookieのベースとなって実現します。

  1. 最初の呼び出しでrequest.getSessionセッションが、何のクッキークッキーは、メモリ内の新しいオブジェクトを作成しません取得するには、名前のJSESSION値は固有のID、セッションの一意の識別子です
  2. JSESSION = ID:クライアントへの応答は、クッキー値、のSet-Cookieが含まれます場合には
  3. 次回は、サーバーへのクッキーのリクエストヘッダとして他のリソースになり、Webブラウザをご覧ください。
  4. セッションIDに応じてメモリからクッキーの値からサーバIDを削除し、対応するオブジェクトを見つけます

使用するHttpSession session = request.getSession();Sessionオブジェクトを取得するには

機能一覧

次のように共通のセッションオブジェクト機能は次のとおりです。

public Object getAttribute(String name); //该方法返回在该 session 会话中具有指定名称的对象,如果没有指定名称的对象,则返回 null。
public Enumeration getAttributeNames(); //该方法返回 String 对象的枚举,String 对象包含所有绑定到该 session 会话的对象的名称。
public long getCreationTime(); //该方法返回该 session 会话被创建的时间,自格林尼治标准时间 1970 年 1 月 1 日午夜算起,以毫秒为单位。
public String getId(); //该方法返回一个包含分配给该 session 会话的唯一标识符的字符串。
public long getLastAccessedTime(); //该方法返回客户端最后一次发送与该 session 会话相关的请求的时间自格林尼治标准时间 1970 年 1 月 1 日午夜算起,以毫秒为单位。
public int getMaxInactiveInterval(); //该方法返回 Servlet 容器在客户端访问时保持 session 会话打开的最大时间间隔,以秒为单位。
public void invalidate(); //该方法指示该 session 会话无效,并解除绑定到它上面的任何对象。
public boolean isNew(); //如果客户端还不知道该 session 会话,或者如果客户选择不参入该 session 会话,则该方法返回 true。
public void removeAttribute(String name); //该方法将从该 session 会话移除指定名称的对象。
public void setAttribute(String name, Object value); //该方法使用指定的名称绑定一个对象到该 session 会话。
public void setMaxInactiveInterval(int interval); //该方法在 Servlet 容器指示该 session 会话无效之前,指定客户端请求之间的时间,以秒为单位。

おすすめ

転載: www.cnblogs.com/lanuage/p/11785974.html