セッションのライフサイクル
前に勉強していたときはあまり注目していませんでしたが、今日は戻ってSessionのライフサイクルを注意深く勉強しました。
セッションはサーバー側に保存されるのが一般的で、(高速アクセスのため)サーバーのメモリに保存されないようにするため、ユーザーが初めてサーバーにアクセスするときにセッションが作成されるはずです。セッションは JSP、サーブレット、およびその他のプログラムにアクセスする場合にのみ作成され、HTML や IMAGE などの静的リソースにアクセスする場合のみセッションは作成されないことに注意してください。 request.getSession(true) を呼び出してセッションを強制することができます。
セッションはいつ期限切れになりますか?
1.サーバーは、長期間非アクティブであったセッションをサーバーのメモリからクリアし、この時点でセッションは無効になります。 Tomcat のセッションのデフォルトの有効期限は 20 分です。
2.Sessionのinvalidateメソッドを呼び出します。
セッションブラウザの要件:
セッションはサーバー上に保存され、クライアントに対して透過的ですが、通常の動作にはクライアントブラウザのサポートが必要です。これは、Session が識別マークとして Cookie を使用する必要があるためです。 HTTP プロトコルはステートレスであり、セッションは HTTP 接続に基づいて同じクライアントであるかどうかを判断できません。そのため、サーバーは JSESSIONID という名前の Cookie をクライアントのブラウザーに送信します。その値はセッションの ID (つまり、 HttpSession.getId() 戻り値)。セッションはこの Cookie を使用して、同じユーザーであるかどうかを識別します。
この Cookie はサーバーによって自動的に生成され、その maxAge 属性は通常 -1 です。これは、現在のブラウザー内でのみ有効であり、ブラウザー ウィンドウ間で共有されないことを意味します。したがって、同じマシン上の 2 つのブラウザ ウィンドウがサーバーにアクセスすると、2 つの異なるセッションが生成されます。ただし、ブラウザウィンドウ内のリンクやスクリプト等により新たに開かれるウィンドウ(デスクトップブラウザのアイコンのダブルクリック等により開かれないウィンドウ)は除きます。このタイプの子ウィンドウは親ウィンドウの Cookie を共有するため、セッションを共有します。
注: 子ウィンドウを除き、新しく開かれたブラウザ ウィンドウは新しいセッションを生成します。子ウィンドウは親ウィンドウのセッションを共有します。たとえば、リンクを右クリックしてポップアップ ショートカット メニューから [新しいウィンドウで開く] を選択すると、子ウィンドウは親ウィンドウのセッションにアクセスできます。
クライアントのブラウザが Cookie 機能を無効にしている場合、または Cookie をサポートしていない場合はどうすればよいですか?たとえば、モバイル ブラウザの大部分は Cookie をサポートしていません。 Java Web は、URL アドレスの書き換えという別の解決策を提供します。
URLアドレスの書き換えは、Cookieをサポートしていないクライアントのための解決策です。 URL アドレス書き換えの原理は、ユーザーのセッション ID 情報を URL アドレスに書き換えることです。サーバーは、書き換えられた URL を解析してセッション ID を取得できます。このようにして、クライアントが Cookie をサポートしていない場合でも、Session を使用してユーザーのステータスを記録できます。 HttpServletResponse クラスは、URL アドレス書き換えを実装するための encodeURL (String url) を提供します。このメソッドは、クライアントが Cookie をサポートするかどうかを自動的に判断します。クライアントが Cookie をサポートしている場合、URL はそのまま出力されます。クライアントが Cookie をサポートしていない場合、ユーザーのセッション ID が URL に書き換えられます。
注: TOMCAT は、リクエストに Cookie が含まれるかどうかに基づいて、クライアントのブラウザが Cookie をサポートするかどうかを判断します。クライアントは Cookie をサポートしている可能性がありますが、最初のリクエストでは Cookie が送信されないため (送信する Cookie がないため)、書き換えられた URL アドレスには jsessionid が含まれたままになります。 2回目のアクセス時はサーバーがブラウザにCookieを書き込んでいるため、書き換え後のURLアドレスにはjsessionidは含まれません。
以上がセッションのライフサイクルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Springboot プロジェクトの本番環境のセッションアウト タイムアウトで問題が見つかりました。問題の説明は次のとおりです: テスト環境では、application.yaml を変更することでセッションアウトが構成されていました。別の時間を設定してセッションアウト構成を確認した後、有効期限がリリース時に直接 8 時間に設定され、運用環境に到着しました。しかし、正午にお客様から、プロジェクトの有効期限が短く設定されており、30分操作がないとセッションが期限切れになり、再度ログインが必要になるというフィードバックをいただきました。開発環境の扱いの問題を解決します。springboot プロジェクトには Tomcat が組み込まれているため、プロジェクト内の application.yaml で設定されたセッションアウトが有効になります。本番環境: 本番環境リリースは

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

更新後に PHP セッションが消える問題の解決策: 1. 「session_start();」を通じてセッションを開きます; 2. すべてのパブリック設定を PHP ファイルに書き込みます; 3. 変数名は配列の添字と同じにすることはできません。 4. phpinfoでセッションデータの保存パスを確認し、ファイルディレクトリ内のsessioが正常に保存されているか確認してください。

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

セッション PHP のデフォルトの有効期限は 1440 秒、つまり 24 分です。つまり、クライアントが 24 分を超えて更新されない場合、現在のセッションは期限切れになります。ユーザーがブラウザを閉じると、セッションは終了し、セッションは存在しなくなります。

問題: 今日、プロジェクトで設定タイムアウトの問題が発生し、SpringBoot2 の application.properties への変更が反映されませんでした。解決策:server.* プロパティは、SpringBoot によって使用される埋め込みコンテナーを制御するために使用されます。 SpringBoot は、ServletWebServerFactory インスタンスの 1 つを使用してサーブレット コンテナのインスタンスを作成します。これらのクラスは、server.* プロパティを使用して、制御されるサーブレット コンテナ (tomcat、jetty など) を構成します。アプリケーションが war ファイルとして Tomcat インスタンスにデプロイされる場合、server.* プロパティは適用されません。それらは当てはまりませんが、

1. セッションに基づく SMS ログインの実装 1.1 SMS ログインのフローチャート 1.2 SMS 検証コード送信の実装 フロントエンド リクエストの説明: リクエスト メソッドの説明 POST リクエスト パス /user/code リクエスト パラメータ 電話 (電話番号) 戻り値 バックエンド インターフェイスなし実装: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1。次の場合は携帯電話番号を確認します。

JavaScriptCookies JavaScript Cookie の使用は、設定、購入、手数料、その他の情報を記憶および追跡する最も効果的な方法です。訪問者のエクスペリエンスを向上させるために必要な情報やウェブサイトの統計。 PHPCookieCookie は、クライアント コンピューターに保存され、追跡目的で保持されるテキスト ファイルです。 PHP は HTTP Cookie を透過的にサポートします。 JavaScript Cookie はどのように機能しますか?サーバーは、訪問者のブラウザに Cookie の形式でデータを送信します。ブラウザは Cookie を受け入れることができます。存在する場合、それは訪問者のハードドライブにプレーンテキストレコードとして保存されます。さて、訪問者がサイト上の別のページに到達すると、
