クライアントがサーバーへの接続を開いてリクエストを作成し、サーバーがクライアントのリクエストに応答するまでのプロセス全体をセッションと呼びます。
推奨コース: Java チュートリアル 。
ブラウザとサーバー間の通信は HTTP プロトコルを介して行われますが、HTTP プロトコルは「ステートレス」プロトコルであり、顧客情報を保存することはできません。応答が完了すると接続が切断され、次のリクエストを再接続する必要がある ユーザーが同じ Web サイト上の複数のページを切り替えたときに、それが同じ顧客であるかどうかを判断することは不可能ですが、セッション トラッキング テクノロジーはこの要件を実現できます。 。
Cookie
サーバーがリクエストに応答すると、応答情報を通じて一部のデータを「キーと値」ペアの形式でクライアントに保存できます。ブラウザが同じアプリケーションに再度アクセスすると、セッション ID を持つ元の Cookie がリクエスト情報を通じてサーバーに送信されます。ネットワーク サーバーは、一意のセッション ID を識別することで各クライアントを表し、それによってこのクライアントのリクエストの次のステップを識別します。
Cookie は組み込みオブジェクトではないため、Cookie のインスタンスを自分で作成する必要があります。これは、サーバーによってクライアントに書き込まれるテキスト情報です。この情報は変更できるため、通常、Cookie には機密性のない情報が保存されます。クライアントがサーバーに再度リクエストすると、Cookie は次の形式でサーバーに送信されます。リクエストヘッダーの形式であり、この時点でサーバーは誰がアクセスしているかを識別できます。
セッション追跡に使用される Cookie はセッション Cookie と呼ばれます。サーブレット仕様におけるセッション追跡の Cookie 名は、ブラウザのメモリに保存される JSESSIONID である必要があります。
Cookie はユーザーのセッション状態を維持するために使用できますが、Cookie 情報はクライアントに保存されるため、セキュリティ上の大きなリスクがあり、一般的なブラウザでは Cookie の数とデータ サイズに厳しい制限があります。 Web アプリケーションでは、通常、セッション状態は HttpSession オブジェクトを通じて維持されます。
Cookie cookie = new Cookie("键", "值"); //创建cookie cookie.setMaxAge(60*60*24); //设置cookie的有效期 cookie.setPath("/"); //设置cookie的有效范围(路径) response.addCookie(cookie); //将cookie写入到客户端
Session
Session はサーバー側に保存されるため、より安全です。各ユーザーには異なるセッションがあり、ユーザー間で共有することはできません。
セッションは Cookie に依存しています。Cookie が無効になっている場合、セッションも無効になります。
セッション テクノロジはサーバー側のソリューションであり、サーバーを通じて状態を維持します。 Java では、HttpServletRequest の getSession メソッドを呼び出すことによって作成されます (パラメーターとして true を使用)。セッションを作成するとき、サーバーはセッションに一意のセッション ID を生成し、このセッション ID は後続のリクエストで作成されたセッションを取り戻すために使用されます。セッションの作成後、セッション関連のメソッドを呼び出すことができ、コンテンツが追加されます。セッションに送信すると、これらのコンテンツはサーバーにのみ保存され、セッション ID のみがクライアントに送信されます。クライアントが再度リクエストを送信すると、このセッション ID が取得され、サーバーは対応するセッションをベースに検索します。セッション ID を確認して再度使用してください。このようなプロセスを形式化することで、ユーザーのステータスが維持されます。
session.setAttribute(String name,Object obj); //往session中存放内容(通过键和值的形式) session.getAtrribute(String name); //通过键从session中获取内容 session.removeAttribute(String name); //把存储在session中的对象移除 session.invalidate(); //销毁session
隠しフォーム フィールド
隠しフォーム フィールドは、HTML の隠しフォーム (隠し入力と入力) にセッション ID を追加します。リダイレクトと転送
を通じて情報を送信します。フォームを通じてサーバーに送信されますが、それ自体は表示されません。
たとえば、2 番目のフォームは最初のフォームのコンテンツを取得し、最初のフォームのコンテンツを隠しフィールド (テキスト ボックスの種類は非表示) として受け入れ、それを再び 3 番目のフォームに渡します。簡単に言えば、リクエストの順序は次のとおりです: フォーム 1 - - > フォーム 2 - - > フォーム 3 ただし、フォーム 3 はフォーム 1 で送信された内容を使用する必要があるため、移行としてフォーム 2 が必要になります。内容はフォーム 3 に渡される前に非表示フィールドとして保存されます。
URL を書き換える
URL 内のセッション ID をエンコードします。例: counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980 このようにして、ブラウザが Cookie をサポートしていない場合でも、セッション追跡を実現できます。
URL レプリケーションの場合、サーバーはリクエストされた URI からセッション ID を抽出し、リクエストを対応するセッションに関連付けます。その後、セッション データにアクセスすると、JSP ページは Cookie 追跡セッションを使用するのと同じ方法で処理されます。まったく同じ方法でIDを取得します。したがって、セッションの実装は Cookie または URL コピー技術に依存します。
String sessionId = request.getRequestedSessionId(); //获得sessionId
応答オブジェクトの encodeURL (StringURL) を使用して URL 値の書き換えを実装します。
<a>"> index页面</a>
このメソッドは、クライアントが Cookie をサポートしているかどうかを自動的に判断します。クライアントが Cookie をサポートしている場合、URL はそのまま出力されます。クライアントが Cookie をサポートしていない場合は、encodeURL() メソッドが呼び出され、ユーザーのセッション ID が自動的に URL に書き換えられます。書き換え後の出力は次のようになります。
a href="index.jsp?jsessionid=0E0C61100AEB06DE6A95EB1CD1DA8158">index页面
HttpServletResponse インターフェイスは、URL 書き換え用の 2 つのメソッドを定義します。
encodeURL メソッド (ハイパーリンクに使用されます)。形式
encodeRedirectURL メソッドの action 属性は、HttpServletResponse.sendRedirect() メソッド
に渡される URL を書き換えるために使用されます。リクエスト メッセージに Cookie ヘッダー フィールドが含まれているかどうかに基づいて、URL 書き換えを実行するかどうかを決定します。これら 2 つのメソッドに URL をパラメータとして渡すことで、URL の書き換えを完了し、URL の後に jsessionid パラメータとその値を追加できます。ブラウザの Cookie をオフにして、Web ページのソース ファイルの URL の背後に jsessionid パラメータとその値があるかどうかを確認する実験を行うことができます。
以上がJSP/サーブレットセッションとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Javaはプラットフォーム固有の問題をどのように軽減しますか? Javaは、JVMおよび標準ライブラリを通じてプラットフォームに依存します。 1)bytecodeとjvmを使用して、オペレーティングシステムの違いを抽象化します。 2)標準のライブラリは、パスクラス処理ファイルパス、CHARSETクラス処理文字エンコードなど、クロスプラットフォームAPIを提供します。 3)最適化とデバッグのために、実際のプロジェクトで構成ファイルとマルチプラットフォームテストを使用します。

java'splatformentencentenhancesmicroservicesecturectureby byofferingdeploymentflexability、一貫性、スケーラビリティ、およびポート可能性。1)展開の展開の展開は、AllosmicRoserviThajvm.2)deploymentflexibility lowsmicroserviceSjvm.2)一貫性のあるAcrossServicessimplisimpligiessdevelisementand

Graalvmは、Javaのプラットフォームの独立性を3つの方法で強化します。1。言語間の相互運用性、Javaが他の言語とシームレスに相互運用できるようにします。 2。独立したランタイム環境、graalvmnativeimageを介してJavaプログラムをローカル実行可能ファイルにコンパイルします。 3.パフォーマンスの最適化、Graalコンパイラは、Javaプログラムのパフォーマンスと一貫性を改善するための効率的なマシンコードを生成します。

aeffectivelytestjavaapplicationsforformcompativity、followthesesteps:1)setupautomatedacrossmultipleplatformsusingsingcitoolslikejenkinsorgithubactions.2)divivisonmanualtingonrealhardwaretocatissusuessususus.3)

Javaコンパイラは、ソースコードをプラットフォームに依存しないバイトコードに変換することにより、Javaのプラットフォームの独立性を実現し、JVMがインストールされた任意のオペレーティングシステムでJavaプログラムを実行できるようにします。

bytecodeachievesplatformedentencedexedectedbyavirtualMachine(VM)、forexApplev.forexample、javabytecodecanrunrunrunnonydevicewithajvm、writeonce、runany "ferfuctionality.whilebytecodeOffersenhの可能性を承認します

Javaは100%のプラットフォームの独立性を達成することはできませんが、そのプラットフォームの独立性はJVMとBytecodeを通じて実装され、コードが異なるプラットフォームで実行されるようにします。具体的な実装には、次のものが含まれます。1。bytecodeへのコンパイル。 2。JVMの解釈と実行。 3。標準ライブラリの一貫性。ただし、JVMの実装の違い、オペレーティングシステムとハードウェアの違い、およびサードパーティライブラリの互換性は、プラットフォームの独立性に影響を与える可能性があります。

Javaは、「Write onse、Averywhere」を通じてプラットフォームの独立性を実現し、コードの保守性を向上させます。 2。メンテナンスコストが低いため、1つの変更のみが必要です。 3.チームのコラボレーション効率が高く、知識共有に便利です。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









