研究クッキーの後に、要求を送信することなくデータ共有の問題を解決します。クッキーは、ブラウザ側のデータストレージ技術で、このレッスンは、重要な追加のデータ・ストレージ・テクノロジー、セッション技術に焦点を当てています。
セッションの学習
問題:
要求オブジェクトは、最初の要求サーブレット内の異なるデータ共有の問題を解決します
それでは、どのユーザーが同じデータを使用する必要があるの異なる要求に対処しますか?
ソリューション:
使用するセッション技術を。
原理:
最初のユーザは、ブラウザは、サーバが要求を受信した後、対応する起動サーバに要求を送信し使用するサーブレット処理。ユーザを処理するユーザ要求に関連する一般的なデータ処理を格納するために使用されるセッション・オブジェクトを作成し、セッションJSESSIONIDクッキーに、このオブジェクトは、ブラウザに(一時的に記憶、ブラウザすなわち、故障が閉じている)記憶されます。ユーザが第2の要求と次の要求を開始するとき、要求メッセージはJSESSIONID、要求を受信するサーバ、対応するサーブレット呼び出し要求処理に含まれ、そしてJSESSIONIDに基づいて対応するセッションオブジェクトを返すであろう。
特徴:
1、セッションCookieの技術の技法は、サーバーのデータ・ストレージ・テクノロジーを依存しています。
2、サーバーによって作成されました
図3に示すように、各ユーザが別個有するセッションを
4、デフォルトの保存時間は 30分効果:
図5に示すように、ユーザの異なるデータ共有要求の問題を解決します。
使用します。
1. 作成して Sessionオブジェクトを
図2に示すように、データストアセッションオブジェクト取得セッション・オブジェクトを
3、からのデータ取得セッションオブジェクトを
図4は、取得したならば、データがセッションに存在しないnullを返します。
注意:
彼らは、ブラウザを閉じていない、とのセッションの場合には失敗しない、任意のサーブレットプロジェクトで取得された要求を持つすべてのユーザーが同じセッションオブジェクトです。
スコープ: 会話
サーブレットのセッション
HTTPは、クライアントのページを取得するたびに意味「ステートレス」プロトコルであり、クライアントがWebサーバーへの個別の接続を開き、サーバーは自動的に前にクライアントの要求への記録を保持しないでしょう。
維持するには、3つの方法 WebクライアントとWebサーバー間のセッションの会話を
1、クッキー
2、非表示のフォームフィールド
3、URLリライト
HttpSessionオブジェクト
上記3つの方法に加えて、サーブレットは、ユーザ、ユーザを識別し、ページ要求するとき、クロスモード又は訪問複数の情報を記憶する提供のHttpSessionインターフェースを提供します。
HTTPクライアントとHTTPサーバ間のセッションの会話を作成するには、このインターフェイスを使用するには、サーブレットコンテナ。セッションが複数接続されているか、ページ要求間で、一定の期間を継続します。
呼び出すことにより、以下のように()、公共HttpSessionオブジェクトのHttpServletRequestメソッドのgetSessionを取得します:
HttpSessionのセッション=でrequest.getSession();
あなたはする必要があるクライアントに送る任意の文書の内容を呼び出す前に()でrequest.getSessionを。
ここで要約され、いくつかの重要な方法のはで利用できるのHttpSessionオブジェクト:
メソッドと説明
1、公共のオブジェクトのgetAttribute(文字列名)
このメソッドは、返され、セッションでセッションの指定された名前を持つオブジェクトをオブジェクト名が指定されていない場合は、nullが返されます。
2、パブリック列挙getAttributeNames()
このメソッドは、返す Stringオブジェクト、セッションのセッションオブジェクトにバインドされたすべての名前を含むStringオブジェクトの列挙を。
3、公共長いgetCreationTime()
この方法は返しミリ秒単位で、セッションのセッションが作成された時、真夜中の自己GMT 1970年1月の日付を。
4、パブリック文字列のgetId()
該方法は、割り当てに戻るセッションのセッションの一意の文字列識別子。
5、公共長いgetLastAccessedTime()
このメソッドは、クライアントが最後に送信し返すミリ秒単位で、真夜中のGMT 1970年1月日からのセッションのセッション関連の要求時間を。
6、公共int型getMaxInactiveInterval()
このメソッドは返し秒で、クライアントアクセスの最大時間間隔セッションオープンセッションを保持しているサーブレットコンテナを。
7、公共ボイド無効()
これは、メソッドがあることを示し無効なセッションセッションであり、それ以上の任意のオブジェクトにバインドされた解放します。
8、公共ブールisNew()
クライアントが認識していない場合は、セッションのセッションを、または顧客が選択した場合にセッションにセッションに参加しない場合、メソッドはtrueを返します。
9、公共ボイドremoveAttribute(文字列名)
以下からのメソッド指定されたオブジェクトのセッションの名前を削除するセッション。
10、公共のボイドのsetAttribute(文字列名、オブジェクト値)
このメソッドはにオブジェクトをバインドするために、指定された名前を使用してセッションセッション。
11、公共ボイドsetMaxInactiveInterval(int型の間隔)
プロセス内のセッションは秒単位で無効なセッションサーブレットコンテナ、指定されたクライアント要求の間の時間、であることを示しているの前に。
削除セッションのセッションデータを
1は、特定の属性を削除するには:あなたが呼び出すことができるキーに関連付けられた特定の値を削除するには、公共のボイドremoveAttribute(String name)メソッドを。
2、全体の削除セッションのセッションを:あなたは、セッションにセッション全体を廃棄する公共ボイド無効()メソッドを呼び出すことができます。
3、設定されたセッションのセッション有効期限を:あなたは別のセッションのセッションタイムアウトを設定するには、公共のボイドsetMaxInactiveInterval(int型の間隔)メソッドを呼び出すことができます。
web.xmlの設定
使用して次のようにTomcatを、上記の方法に加えて、あなたは、セッションタイムアウトのweb.xmlファイルでセッションを設定することができます。
<セッション設定> <セッションタイムアウト> 15 </セッションタイムアウト> </セッション設定>
上記タイムアウト時間としては、例えば、被覆、分で 30分間、Tomcatのデフォルトのタイムアウト。
いずれかの()メソッドでgetMaxInactiveIntervalサーブレット秒で、セッションタイムアウトセッションを返します。したがって、15分のセッション設定のweb.xmlセッションタイムアウト時間は、次いでgetMaxInactiveInterval()900が返した場合。