Java で Cookie とセッション テクノロジを使用する方法
http ステートレス プロトコルの解決策:
HTTP はステートレス プロトコルです。ステートレス プロトコルでは、サーバーが複数のリクエストにわたって各ユーザーに関する情報や状態を保持する必要はありません。
ただし、一部の Web アプリケーションでは、たとえば、Web サーバーが Web ページのコンテンツをユーザーに合わせてカスタマイズする必要がある場合など、あるページから別のページへのユーザーの進行状況を追跡する必要がある場合があります。このような状況に対する解決策には、
- ##HTTP Cookie の使用が含まれます。
- サーバー側セッション。
- 隠し変数 (現在のページにフォームが含まれている場合)
- URI エンコードされたパラメーター (/index など) の URL 書き換えを使用します。 php? session_id=some_unique_session_code.
//创建cookie
Cookie cookie = new Cookie("username", "admin");
//将cookie响应到浏览器
response.addCookie(cookie);
ログイン後にコピー
メッセージ内での Cookie の表現方法: If in サーバーに Cookie を作成し、ブラウザに応答します。このとき、 Set-Cookie: username=admin という応答メッセージが表示されます。以降、ブラウザがサーバーにリクエストを送信するたびに、この Cookie が含まれます。リクエスト メッセージに表示されます: Cookie: username=adminブラウザへの Cookie に応答した後、Cookie はブラウザの実行メモリに保存されます。ブラウザを閉じると、ブラウザの実行メモリが解放されるため、Cookie がクリアされます。したがって、セッションのデフォルトの有効時間は、ブラウザを開いてから閉じるまでです。3. Cookie を取得します//创建cookie Cookie cookie = new Cookie("username", "admin"); //将cookie响应到浏览器 response.addCookie(cookie);
//获取浏览器发送请求所携带的所有cookie
Cookie[] cookies = request.getCookies();
if(cookies != null){
for (Cookie cookie : cookies) {
System.out.println(cookie.getName() + "," + cookie.getValue());
}
}
ログイン後にコピー
4. Cookie を変更します//获取浏览器发送请求所携带的所有cookie Cookie[] cookies = request.getCookies(); if(cookies != null){ for (Cookie cookie : cookies) { System.out.println(cookie.getName() + "," + cookie.getValue()); } }
a> Cookie はキーと値の形式のデータであるため、同じキーと異なる値を持つ Cookie を作成するだけで、ブラウザーに応答して、対応する Cookie の値が上書きされます b>Use cookie.setValue()
/*Cookie cookie = new Cookie("username", "root"); response.addCookie(cookie);*/ Cookie[] cookies = request.getCookies(); if(cookies != null){ for (Cookie cookie : cookies) { if(cookie.getName().equals("username")){ cookie.setValue("zhangsan"); response.addCookie(cookie); } } }
を使用して Cookie の有効時間を設定できます。
a>設定された有効期間が負の整数の場合は効果がありません、つまり、有効期間はブラウザを開いてからブラウザを閉じるまでです。有効時間が 0 の場合、Cookie はすぐに削除されます c> 設定された有効時間が正の整数の場合有効時間が 1 セッションに満たない場合、 Cookie は、指定された時間に達すると、実行中のメモリから自動的に削除されます。有効時間が 1 セッションより長い場合、ブラウザを閉じるときに、Cookie 内のデータがディスクに保存されます。ブラウザが再度開かれると、ディスク内のデータが実行中のメモリに再ロードされます#6. Cookie の有効なパスを設定します
#cookie. setPath();Cookie が作成されてブラウザに応答すると、有効なパスを持つ Cookie が設定され、Cookie は指定されたパスにアクセスする場合にのみ保持されます2. session1.セッションの概念セッションは、サーバー内で作成および維持され、サーバー側に保存されるセッション テクノロジです。セッションのアプリケーション シナリオ: ユーザーのログイン ステータスを記録します2. セッション取得時のパケットの変化を観察する request.getSession() を通じてセッション オブジェクトを取得する このセッションで初めて request.getSession( にアクセスしたとき)セッション オブジェクトを取得すると、キー JSESSIONID を持つ Cookie が応答メッセージに表示されます。リクエストがブラウザを通じてサーバーに送信されるたびに、サーバーが停止している場合でも、この JSESSIONID を持つ Cookie が送信されます。 accessed# この場合、request.getSession() を使用してセッション オブジェクトを再度取得します。リクエスト メッセージに JSESSIONID Cookie が存在する限り、この Cookie は応答メッセージには表示されなくなります
3. セッションの原則
質問:
セッションの原則とは何ですか?
セッションとクッキーの関係は何ですか?
なぜ 1 つのセッションで同じセッションが取得されるのですか?
回答:
request.getSession()でセッションを取得すると、リクエストメッセージにキーJSESSIONIDを持つCookieが取得されます。 JSESSIONID の cookie は、現在のセッションが開始されたばかりで、現在のセッションでセッション オブジェクトを取得するのは初めてであることを示します。このとき、サーバー内にセッション オブジェクトが作成され、キーが JSESSIONID、値が UUID のランダムなシーケンスを持つ Cookie が作成され、作成されたセッション オブジェクトはサーバーが管理するマップ コレクションに保存されます。 UUID のランダム シーケンスをキーとして使用し、セッション オブジェクトを値として使用し、最後に JSESSIONID の Cookie をブラウザーに応答します。
若请求报文中存在键为JSESSIONID的cookie,此时获取该cookie的值,即UUID随机序列,以UUID随机序列为键,从服务器所维护的map集合中就可以获取唯一的session对象
4、session的常用方法
4.1、session存在域对象的数据
void setAttribute(String name, Object value);
Object getAttribute(String name);
void removeAttribute(String name);
4.2、设置session的时效
session的时效指在指定时间内,若没有对session进行任何的操作,此时session会自动失效
a>通过web.xml设置,单位是分钟
<session-config> <session-timeout>30</session-timeout> </session-config>
b>通过session.setMaxInactiveInterval()设置,单位是秒
session.setMaxInactiveInterval(1800);
4.3、强制使session失效
session.invalidate()
5、session的钝化和活化
session的钝化指服务器关闭,但是浏览器没有关闭,此时session中的数据会被序列化到磁盘上
session的活化指服务器启动,并且浏览器仍然没有关闭,此时会将序列化到磁盘上的数据重新加载到内存中
注意:若session中存储的是实体类对象,此时若要钝化,则该实体类和该实体类的成员变量也都要实现序列化的接口
三、cookie和session的区别
1、cookie存储在浏览器端,session存储在服务器端,因此cookie相对而言不安全
2、cookie只能存储字符串类型的键值对,session可以存储任意类型的数据,因此若存储相同的数据,cookie可能会产生大量的cookie
3、由于每次浏览器发送请求都会携带cookie,若有大量的cookie,就会造成网络负担
以上がJava で Cookie とセッション テクノロジを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
