この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 17168|答える: 1

[出典] セッションのライフサイクル

[リンクをコピー]
掲載地 2015/04/19 19:44:59 | | |
以前はあまり気にしていませんでしたが、今日はセッションのライフサイクルをじっくりと見直しました。
セッションはサーバー側に保存され、一般的に高速アクセスのためにサーバーのメモリに存在しないように、Sessinonはユーザーが初めてサーバーにアクセスするときにセッションを作成します。なお、JSP、Servlet、その他のプログラムにアクセスするとセッションが作成されず、HTMLやIMAGEなどの静的リソースにアクセスするとセッションは作成されません。
  セッションはいつ期限切れですか?
1. サーバーは長期間非アクティブだったセッションをサーバーメモリから消去し、そのセッションは無効となります。 Tomcatのセッションのデフォルトの有効期限は20分です。
2. セッションの無効化メソッドを呼び出します。
  ブラウザのセッション要件:
 セッションはサーバー上に保存されクライアントにとっては透過的ですが、通常の動作にはクライアントのブラウザのサポートが必要です。 これは、Sessionが識別子としてクッキーを使用する必要があるためです。 HTTPプロトコルはステートレスであり、HTTP接続からセッションが同一の顧客かどうかを判断できないため、サーバーはJSESSIONIDというクッキーをクライアントブラウザに送信します。このクッキーにはセッションのid値(すなわちHttpSession.getId()の返り値)が記されています。 セッションはクッキーを使って同じユーザーかどうかを識別します。

このクッキーはサーバーによって自動的に生成され、そのmaxAge属性は通常-1です。これは現在のブラウザでのみ有効であり、ブラウザのウィンドウ間で共有されず、ブラウザが閉じられたときには有効でなくなります。 したがって、同じマシン上の2つのブラウザウィンドウがサーバーにアクセスすると、異なる2つのセッションが生成されます。 ただし、ブラウザウィンドウ内のリンクやスクリプトなどで開く新しいウィンドウ(つまり、デスクトップブラウザのアイコンをダブルクリックして開くウィンドウではありません)。 これらの子ウィンドウは親ウィンドウのクッキーを共有し、したがってセッションを共有します。

注:新しいセッションは新たに開いたブラウザウィンドウで生成されますが、サブウィンドウは例外です。 子ウィンドウは親ウィンドウのセッションを共有します。 例えば、リンクを右クリックしてショートカットメニューの「新しいウィンドウで開く」を選択すると、子ウィンドウは親ウィンドウのセッションにアクセスできます。

もしクライアントブラウザがクッキーを無効にしたり、クッキーをサポートしていない場合はどうなりますか? 例えば、ほとんどのモバイルブラウザはクッキーをサポートしていません。 Java Webはもう一つの解決策としてURLアドレスの書き換えを提供します。
URLアドレスの書き換えは、クッキーをサポートしないクライアント向けのソリューションです。 URLアドレス書き換えの原理は、ユーザーのセッションのID情報をURLアドレスに書き換えることです。 サーバーは書き換えたURLを解析してセッションIDを取得することができます。 この方法により、クライアントがクッキーをサポートしていなくても、セッションでユーザーの状態を記録できます。 HttpServletResponseクラスはencodeURL(文字列URL)を提供し、URLアドレスの書き換えを実装し、クライアントがクッキーをサポートしているかどうかを自動的に判定します。 クライアントがクッキーをサポートしている場合、URLはそのまま出力されます。 クライアントがクッキーをサポートしていない場合、ユーザーセッションのIDがURLに書き換えられます。
注:TOMCATは、リクエストにクッキーが含まれているかどうかに基づいてクライアントブラウザがクッキーをサポートしているかどうかを判断します。 クライアントはクッキーをサポートしているかもしれませんが、最初のリクエストではクッキーを搭載しないため(クッキーが存在しないため)、書き換えたURLアドレスには依然としてjsessionidが残ります。 サーバーは2回目の訪問時にすでにブラウザにクッキーを書き込みているため、書き換えたURLアドレスにはjsessionidは含まれません。





先の:テーブルの境界線を細線に変えるHTMLのトリック
次に:パフォーマンス最適化 ASP.NET カスタムファイルキャッシュを構築しましょう
掲載地 2017/03/18 16:52:21 |
とてもよく書かれています。学んでください!
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com