まず、クッキーとは何かを理解しましょう。
Cookieは実際にはハードドライブに存在するデータですが、これらのデータは非常に特別なものであり、Webアプリケーションによるヘルプストレージのためにブラウザにのみ提出できます。また、ブラウザのCookieを読むこともできます。
通常、Webアプリケーションは、一部のユーザー情報やその他の小規模および一時的なデータのみをCookieに保存します。データの量が多い場合、Cookieに保存するのに適していません。
一般に、ブラウザは各Webアプリケーションのデータを保存するために40のCookieを提供し、各Cookieのサイズは4Kを超えません(一部のブラウザは大きなデータを保存できると聞きましたが、データ抽出効率が高くないため、パフォーマンスに影響を与えるため、このような大きなデータを保存しません)
多くのナンセンスを言った後、ポイントがついに来ました
Javaは、httpservletrequestインターフェイスを介してブラウザリクエストでクッキーデータにアクセスします(ここでCookieの全体を理解させてください。コードは後で説明します)
各Cookieには2つの属性があります。キーと値(特定の形式文字列はないため、DIYにデータを保存できますが、URLエンコードの問題に注意する必要があります。エンコードの問題については、後でコードと一緒に説明します)
新しいCookieを保存する必要がある場合は、Cookieインスタンスを新しい新しいインスタンスに送信して、httpservletrsponseを介してブラウザに送信してから、ローカルに保存できます。
これがCookieの一般的なクラスです
/ * *このクラスは、ブラウザリクエストからCookieを抽出し、Cookieで関連操作を実行できます * * */public class cookiesutil拡張basecontroller {/** * @param request * @return * @return */public static cookie getcookiebyname(httpserquemap = cookie> cookie> string < ReadCookieMap(リクエスト); if(cookiemap.containskey(name)){cookie cookie =(cookie)cookiemap.get(name);クッキーを返す; } else {return null; }} / ** *クッキーをマップにカプセル化 * * @param request * @return * / private static map <string、cookie> readcookiemap(httpservletrequest request){map <string、cookie> cookiemap = new hashmap <string、cookie>(); cookie [] cookie = request.getCookies(); if(null!= cookie){for(cookie cookie:cookie){cookiemap.put(cookie.getname()、cookie); }} cookiemapを返します。 } / ** * cookiesを保存 * * @param応答 *サーブレットリクエスト * @param値 * save value * @author jxf * / public static httpservletresponse setcookie(httpservletresponse応答、文字列名、文字列値、int時間){//新しいクッキーオブジェクト、キークッキーペアです。 // Multi-Application Sharing Cookie.setPath( "/"); // Cookieの値に中国語が含まれている場合、Cookieをエンコードする必要があります。そうしないと、文字化けコードが生成されます。 try {urlencoder.encode(value、 "utf-8"); } catch(unsupportedencodingexception e){e.printstacktrace(); } cookie.setmaxage(time); // cookieを応答に追加して、response.addcookie(cookie)を有効にします。 // AddCookieの後、同じ名前のCookieがすでに存在する場合、最新は古いCookie Return Responseを上書きします。 }上記の一般的なクラスを使用すると、新しいCookieを読んで作成できます。ここでは、1つのことに言及したいと思います。新しいCookieの名前が既に存在する場合、それは繰り返し追加されず、以前のCookieが上書きされます。
ブラウザは、要求されたCookieと返されたCookieをどのように表示しますか?愚かなためにGoogleブラウザを取ります
その後、Cookieを削除する必要がある場合があります
/** * <p>無効なCookieを削除</p> * <p>無効?1。廃止されていない</ p> * @param request * @param response * @param list */ private void dreectcookiebyname(httpservletrequest request、httpservletresponse応答、string deletekey)nullpointerexception {12マップ<文字列> cookie> cookiemap = readcokiemap(17 for(17 for(17 for); cookiemap.keyset()){if(key == deletekey && key.equals(deletekey)){cookie cookie = cookiemap.get(key); 21 Cookie.SetMaxage(0); // Cookieの有効性時間を0 Cookie.SetPath( "/"); //ストレージパスResponse.AddCookie(Cookie)を設定しないでください。 }}}Cookieの削除には時間とパスの両方のパラメーターが必要であることに注意してください。そうしないと、一部のブラウザは削除できません。
上記は、ブラウザCookieに読み書きするJavaのデータのコレクションです。今後も関連情報を追加し続けます。このサイトへのご支援ありがとうございます!