Cookie はクライアント コンピュータに保存されるテキスト ファイルであり、大量のトラック情報が保存されます。サーブレット テクノロジに基づいて、JSP は明らかに HTTP Cookie のサポートを提供できます。
通常、リピート顧客を特定するには次の 3 つのステップがあります。
サーバー スクリプトは一連の Cookie をブラウザに送信します。名前、年齢、ID番号など
ブラウザは、必要な場合に備えて、この情報をコンピュータ上にローカルに保存します。
次回ブラウザがサーバーにリクエストを送信するときに、これらの Cookie 情報もサーバーに送信され、サーバーはこの情報を使用してユーザーを識別したり、他のことを行ったりします。
このセクションでは、Cookie の設定またはリセット方法、Cookie へのアクセス方法、削除方法について説明します。
Cookie は通常、HTTP ヘッダーに設定されます (ただし、JavaScript はブラウザーに直接 Cookie を設定できます)。 JSP では、Cookie を設定するには、次の情報ヘッダーをサーバーに送信する必要があります。
HTTP/1.1 200 OKDate: Fri, 04 Feb 2000 21:03:38 GMTServer: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: name=xyzexpires=Friday, 04-Feb-07 22:03: 38 GMT; パス=/; ドメイン=チュートリアルポイント.com接続: closeContent-Type: text/html
ご覧のとおり、Set-Cookie ヘッダーにはキーと値のペア、GMT (グリニッジ標準時) 時間、パス、およびドメイン名が含まれています。キーと値のペアは URL としてエンコードされます。有効期限フィールドは、この時間が経過するとこの Cookie をクリアできるようにブラウザに指示するものです。
ブラウザが Cookie を保存するように設定されている場合、この情報は有効期限が切れるまで保持されます。ユーザーが訪問したページが Cookie 内のパスとドメイン名に一致する場合、ブラウザは Cookie をサーバーに再送信します。ブラウザ側のヘッダーは次のようになります。
GET / HTTP/1.0接続: Keep-Aliveユーザーエージェント: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)ホスト: zink.demon.co.uk:1126Accept: image/gif, */*Accept-エンコーディング: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8Cookie: 名前=xyz
JSP スクリプトは、リクエスト オブジェクトの getCookies() メソッドを介してこれらの Cookie にアクセスし、このメソッドは Cookie オブジェクトの配列を返します。
次の表に、Cookie オブジェクトで一般的に使用されるメソッドを示します。
シリアルナンバー | 方法と説明 |
---|---|
1 | public void setDomain(String pattern) は、 w3cschool.cn などの Cookie のドメイン名を設定します。 |
2 | public String getDomain() は、 w3cschool.cn などの Cookie のドメイン名を取得します。 |
3 | public void setMaxAge(int expiry) は、 Cookie の有効期間を秒単位で設定します。デフォルトの有効期間は、現在のセッションの存続時間です。 |
4 | public int getMaxAge() はCookie の有効期間を秒単位で取得します。デフォルトは -1 で、ブラウザが閉じるまで Cookie が存続することを示します。 |
5 | public String getName() はCookie の名前を返します。名前は作成後に変更できません。 |
6 | public void setValue(String newValue) はCookie の値を設定します |
7 | public String getValue() はCookie の値を取得します。 |
8 | public void setPath(String uri) は、 Cookie パスを設定します。デフォルトは、現在のページ ディレクトリおよびこのディレクトリ内のすべてのサブディレクトリ内のすべての URL です。 |
9 | public String getPath() はCookie のパスを取得します。 |
10 | public void setSecure(boolean flag) は、 Cookie を送信用に暗号化する必要があるかどうかを示します。 |
11 | public void setComment(String purposes) は、 Cookie の目的を説明するコメントを設定します。注釈は、ブラウザがユーザーに Cookie を表示するときに役立ちます。 |
12 | public String getComment() は、 Cookie の目的を説明するコメントを返します。コメントがない場合は null を返します。 |
JSP を使用して Cookie を設定するには、次の 3 つの手順が必要です。
(1) Cookie オブジェクトを作成します。Cookieの名前と値 (両方とも文字列) をパラメーターとして使用して、Cookie コンストラクターを呼び出します。
クッキー クッキー = 新しい クッキー("キー","値");
名前にも値にもスペースや次の文字を含めることはできないことに注意してください。
[ ] ( ) = , " / ? @ : ;
(2) 有効期間を設定します。 setMaxAge() 関数を呼び出して、Cookie の有効期間 (秒単位) を示します。次の操作では、有効期間を 24 時間に設定します。
cookie.setMaxAge(60*60*24);
(3) HTTP 応答ヘッダーに Cookie を送信します。response.addCookie () 関数を呼び出して、HTTP 応答ヘッダーに Cookie を追加します。
応答.addCookie(クッキー);
<% // first_name と last_name の Cookie を設定します Cookie firstName = new Cookie("first_name", request.getParameter("first_name")) Cookie lastName = new Cookie("last_name",request.getParameter("last_name")); // Cookie の有効期限を 24 時間に設定します。 firstName.setMaxAge(60*60*24); lastName.setMaxAge(60*60*24); // 応答ヘッダーに cookie を追加します。 head><title>Cookie の設定</title></head><body><center><h1>設定Cookie</h1></center><ul><li><p><b>名:</b><%= request.getParameter("first_name")%></p></li>< li><p><b>姓:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
上記のファイルを <Tomcat インストール ディレクトリ>/webapps/ROOT ディレクトリに配置し、http://localhost:8080/hello.jsp にアクセスすると、次の出力が表示されます。
名と姓を入力して送信ボタンをクリックすると、画面に名と姓が表示され、次回クリックしたときにサーバーに送信される 2 つの Cookie が設定されます。送信ボタン。
Cookie を読み取るには、request.getCookies() メソッドを呼び出して javax.servlet.http.Cookie オブジェクトの配列を取得し、配列を反復処理して getName() メソッドと getValue() メソッドを使用して各 Cookie を取得する必要があります。 . 名前と値。
前の例の Cookie を読んでみましょう。
<html><head><title>Cookie の読み取り</title></head><body><center><h1>Cookie の読み取り</h1></center><% Cookie cookie = null; null; // 配列である Cookie データを取得します。 cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Found Cookies Name and Value</h2>"); int i = 0; i < cookies.length; i++){ cookie = cookies[i] out.print("名前: " + cookie.getName( ) + ", "); ( )+" <br/>") } }else{ out.println("<h2>Cookie が見つかりません</h2>"); }%></body></html>
名前の Cookie を「John」、姓を「Player」に設定して http://localhost:8080/main.jsp にアクセスすると、次の出力が得られます。
見つかった Cookie 名前と値 名前 : first_name、値 : John 名前 : last_name、値 : Player
Cookie の削除は非常に簡単です。 Cookie を削除したい場合は、以下の手順に従ってください。
既存の Cookie を取得し、それを Cookie オブジェクトに保存します。
Cookie の有効期限を 0 に設定します。
この Cookie を応答ヘッダーに追加し直します。
次のプログラムは、「first_name」という名前の Cookie を削除します。次回 main.jsp を実行すると、first_name は null になります。
<html><head><title>Cookie の読み取り</title></head><body><center> <h1>Cookie の読み取り</h1></center><% Cookie cookie = null; null; // 現在のドメイン名の Cookie を取得します。これは配列です cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> 見つかった Cookie の名前と値</h2> "); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("first_name") == 0 ){ cookie.setMaxAge(0); (cookie); out.print("削除された cookie: " + cookie.getName( ) + "<br/>") } out.print("Name : " + cookie.getName( ) + ", "); out.print("Value: " + cookie.getValue( )+" <br/>") } }else{ out.println( "<h2>Cookie が見つかりません</h2>");本文></html>
これにアクセスすると、次の出力が得られます。
Cookie の名前と値削除された Cookie : first_nameName : first_name、値: JohnName : last_name、値: Player
http://localhost:8080/main.jsp に再度アクセスすると、次の結果が得られます。
見つかった Cookie の名前と値Name: last_name、Value: Player
ブラウザで Cookie を手動で削除することもできます。 [ツール] メニュー項目をクリックし、[インターネット オプション] を選択し、[Cookie の削除] をクリックしてすべての Cookie を削除します。