目次
セッションとクッキーの関係は何ですか?
4、session的常用方法
4.1、session存在域对象的数据
4.2、设置session的时效
4.3、强制使session失效
5、session的钝化和活化
三、cookie和session的区别
ホームページ Java &#&チュートリアル Java で Cookie とセッション テクノロジを使用する方法

Java で Cookie とセッション テクノロジを使用する方法

Apr 23, 2023 pm 06:55 PM
java cookie session

    http ステートレス プロトコルの解決策:

    HTTP はステートレス プロトコルです。ステートレス プロトコルでは、サーバーが複数のリクエストにわたって各ユーザーに関する情報や状態を保持する必要はありません。

    ただし、一部の Web アプリケーションでは、たとえば、Web サーバーが Web ページのコンテンツをユーザーに合わせてカスタマイズする必要がある場合など、あるページから別のページへのユーザーの進行状況を追跡する必要がある場合があります。このような状況に対する解決策には、

    • ##HTTP Cookie の使用が含まれます。

    • サーバー側セッション。

    • 隠し変数 (現在のページにフォームが含まれている場合)

    • URI エンコードされたパラメーター (/index など) の URL 書き換えを使用します。 php? session_id=some_unique_session_code.

    プロトコルをステートレスにする理由は、サーバーが複数のリクエストのステータスを追跡する必要がないためであり、追跡したくてもできないわけではありません。これにより、クライアントとサーバー間の契約が簡素化され、多くの場合 (CDN 経由で静的データを提供する場合など)、転送する必要のあるデータの量が最小限に抑えられます。サーバーがクライアント アクセスの状態を維持する必要がある場合、リクエストの作成と応答の構造はより複雑になります。実際、モデルのシンプルさはその最大の特徴の 1 つです。

    1. Cookie

    1. cookie の概念

    Cookie は、サーバー上で作成および維持され、ブラウザ側に保存されるセッション テクノロジです

    Cookie アプリケーションのシナリオ: ユーザー名とパスワードを記憶し、7 日間ログインする必要はありません

    2、Cookie の作成

    //创建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[] cookies = request.getCookies();
    if(cookies != null){
        for (Cookie cookie : cookies) {
            System.out.println(cookie.getName() + "," + cookie.getValue());
        }
    }
    ログイン後にコピー

    4. Cookie を変更します

    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);
            }
        }
    }
    ログイン後にコピー

    5. Cookie の有効期間を設定します

    Cookie がブラウザに応答した後、Cookie はブラウザの実行メモリに保存されます。ブラウザが閉じられると、ブラウザの実行メモリが解放され、Cookie がクリアされます。したがって、セッションのデフォルトの有効時間は、ブラウザを開いてからブラウザを閉じるまでです。

    ただし、Cookie.setMaxAge()

    を使用して Cookie の有効時間を設定できます。

    a>設定された有効期間が負の整数の場合は効果がありません、つまり、有効期間はブラウザを開いてからブラウザを閉じるまでです。有効時間が 0 の場合、Cookie はすぐに削除されます

    c> 設定された有効時間が正の整数の場合

    有効時間が 1 セッションに満たない場合、 Cookie は、指定された時間に達すると、実行中のメモリから自動的に削除されます。

    有効時間が 1 セッションより長い場合、ブラウザを閉じるときに、Cookie 内のデータがディスクに保存されます。ブラウザが再度開かれると、ディスク内のデータが実行中のメモリに再ロードされます

    #6. Cookie の有効なパスを設定します

    #cookie. setPath();

    Cookie が作成されてブラウザに応答すると、有効なパスを持つ Cookie が設定され、Cookie は指定されたパスにアクセスする場合にのみ保持されます

    2. session

    1.セッションの概念

    セッションは、サーバー内で作成および維持され、サーバー側に保存されるセッション テクノロジです。

    セッションのアプリケーション シナリオ: ユーザーのログイン ステータスを記録します

    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 サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

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

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

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

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

    Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

    Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

    Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

    Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

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

    ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

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

    Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

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

    Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

    Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

    Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

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

    Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

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

    See all articles