1。クッキーとは何ですか? Baiduのネチズンのコメント
簡単に言えば、Cookieは、サーバーが使用してコンピューターを識別できるように、サーバーによってコンピューターに一時的に保存されている情報です。 Webサイトを閲覧している場合、Webサーバーは最初に少量の情報を送信してコンピューターに配置します。次回同じWebサイトにアクセスすると、Webサーバーは最初に残されたCookie情報があるかどうかを確認します。その場合、ユーザーはCookieのコンテンツに基づいて審査され、特定のWebページコンテンツを送信します。
2。クッキーはどこにありますか?
3.クッキーは削除できますか?
4。クッキー実装の原則
ブラウザのブラウザのクッキーストアで初めてブラウザをリクエストしたとき、クッキーはありません。
最初の訪問にはCookieが含まれていません。ブラウザは、CookieリクエストヘッダーをHTTPリクエストメッセージに追加して、CookieをWebサーバーに戻します。ブラウザは、「名前/値」ペア(名前と値のペア)の形式でCookieの情報フラグメントを保存します。次回アクセスすると、WebサーバーはHTTP応答メッセージにセットクッキー応答ヘッダーを追加して、Cookie情報をブラウザに送信します。
現実にクッキーを見てみましょう
Cookie.jspを作成し、セッション= "false"を設定して、簡単に観察します
<%@ページ言語= "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" session = "false"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <タイトル>タイトル=タイトル> < Cookie( "name"、 "wyf"); respons.addcookie(cookie);%> </body> </html>
最初にcookie.jspファイルにアクセスし、IEに入力します
http:// localhost:8080/day01/cookie.jsp
リクエストヘッダーでは、最初の訪問ではCookieを搭載していないことがわかります。
応答ヘッダーでは、Set-Cookieから返送され、ブラウザのローカルクッキーストアに保存されます
Cook.jspファイルに2回目にアクセスして、変更があるかどうかを確認します
リクエストヘッダーでは、アクセスがブラウザのローカルクッキーストレージエリアからCookieを搭載するリクエストであることがわかります。
以下は応答ヘッダーです。
インタラクティブなグラフを使用して、クッキーメカニズムを理解しましょう。
Cookieの作成と獲得を見てみましょう
Cookie.jspのコードは、リクエストにCookieがない場合、作成されて返されます。リクエストにCookieが含まれている場合、Cookie Key-Valueペア(name-value)が出力されます
<%@ページ言語= "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" session = "false"%> < "http://www.w3.org/tr/html4/loose.dtd"><html> <head> != null && cookies.length> 0){for(cookie cookie:cookie){out.print(cookie.getname()+":"+cookie.getValue();}} else {out.print( "cookie、cookie no and returned"); cookie cookie = new Cookie( "name"、 "wyf"); respons.addcookie(cookie);}%> </body> </html>最初の訪問
再訪
上記の操作は、ブラウザを再度閉じる必要があることです。なぜ私たちはデバッグされているのですか?
デフォルトでは、Cookieはブラウザのカーネルに保存されたセッションレベルのCookieであり、ブラウザを終了した後にユーザーが削除されるためです。ブラウザにクッキーをディスクに保存したい場合は、秒単位のマクセージを使用する必要があります
永続的なクッキーを見てみましょう
<%cookie [] cookie = request.getCookies(); if(cookies!= null && cookies.length> 0){for(cookie cookies:cookies){out.print(cookie.getName()+":"+cookie.getvalue();}}} out.print(cookie Cookie( "name"、 "wyf"); cookie.setmaxage(30); response.addcookie(cookie);}%>cookie.setmaxage(30); 30秒に設定されているので、ここでスクリーンショットを撮りません。それはあなたの名前の下にあると言ってください。初めてクッキーを持っていない場合は、2回目はCookieを作成できます。 2回目のCookieがない場合は、ブラウザを閉じて30秒以内にアクセスできます。キーバリューペアのクッキーをプロンプトにプロンプトします。前のプロンプトではなく、前のクッキーのクッキーはありません。前のクッキー用のクッキーはありません。
自動ログイン
login.jsp
<%@ page Language = "Java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> type = "text" name = "name"/> <入力タイプ= "" value = "sumit" // </form> </body> </html>
success.jsp
<%@ページ言語= "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" session = "false"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title>タイトル> < Cookieで、Cookie文字列名= request.getParameter( "name"); if(name!= null &&!name.trim()。equals( "")){cookie cookie = new cookie( "namecookie"、name); cookie.setmaxage(60); adddcookie(cookie(cook); Cookieのユーザー情報をお読みください。ある場合、ウェルカムメッセージCookie [] cookies = request.getCookies(); if(cookies!= null && cookies.length> 0){for(cookie cookie:cookies){string cookiename = cookie.getName(); if( "namecookie" .equals(cookiename){string val = cookie.getvalue}; (name!= null &&!name.trim()。equals( "")){out.print( "hello" + name);} else {//リクエストパラメーターがなく、login.jspresponse.sendredirect( "login.jsp");} http:// localhost:8080/day01/login.jspに初めてアクセスしたとき、名前パラメーター値を入力して送信します。 success.jspでは、最初に提出されたパラメーター名値を取得します。 nullでない場合は、Cookieを直接設定し、パラメーター名値を保存し、ページに名前パラメーター値を出力します。 2回目にアクセスすると、http:// localhost:8080/day01/success.jspを直接入力してください。
今回はパラメーター名値を掲載しているので、Cookieの値値から値を取得してから出力を表示するだけでいいです
最近のショッピングの歴史を示してください
books.jsp
<%@ page Language = "Java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> href = "book.jsp?book = javaweb"> javaweb </a> <a href = "book.jsp?book = java"> java </a> <a href = "book.jsp?book = oracle"> oracle </a> <a href = "book = ajax"> ajax </a <a href = "book.jsp?book = javascript"> javascript </a> <a href = "book.jsp?book = android"> android </a> <a href = "book.jsp?book = jbpm"> jbpm </a> <br> <% Filtered Book、cookienameがatguigu_book_の場合、(cookies!= null && cookies.length> 0){for(cookie c:cookies){string cookiename = c.getname(); if(cookiename.startswith( "safly"){// cookievalueout.println(c.getvalue()); out.print( "<br>");}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}book.jsp
<%@page Import = "Java.util.ArrayList"%> <%@page Language = "java" contentType = "text/html; charset =" utf-8 "%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <タイトル> charset = utf-8"> <title> %> <br> <br> <a href = "books.jsp"> return </a> <%string book = request.getparameter( "book"); //削除されたcookie = request.getCookies(); //すべてのクッキーを保存するクッキー= request.getCookies books.jspは、入っている本のcookie tempcookie = null; if(cookies!= null && cookies.length> 0){for(cookie c:cookies){string cookiename = c.getname(); if(cookiename.startswith( "safly")){cookie c:cookies){for(cookie c:cookies){cookiename.startswith( "safly"){bookcookies. add(c); if(c.getValue()。equals(book)){out.print( "c.getvalue()。equals(book)"); tempcookie = c;}}}}}}}} ///Out.print("tempcookie == null ");} //それがある場合は、BookCookie自体を削除し、リスト内の重複Cookieを削除し、それを渡し、それを渡します(tempcookie!= null){tempcookie.setmaxage(0); Response.AddCookie(TempCookie);} // books.jspから渡された本をCookie Cookie cook = new Cookie( "Safly"+book、book); response.addcookie(cook);%> </html> </html> </html>論理的な関係について話しましょう:
books.jspでは、以下に本のリストです。
Javaweb
Java
オラクル
ajax
JavaScript
アンドロイド
jbpm
book.jspにジャンプするために、リンク(javawebなど)をランダムに選択します。初めてアクセスしたとき、Cookieはありませんでしたので、次のbook.jspの方法に電話してCookieを作成しました。 book.jspページで、[戻る]をクリックしてbooks.jspに戻り、cooks.jspが持ち込んだcookievalueを取り出し、選択した本リストを表示します。
Cookie cook = new Cookie( "Safly"+book、book); response.addcookie(cook);
今、私たちはbooks.jspに戻り、javawebの本を選択しました。本(Javaを仮定して)を選択してから、books.jspにジャンプします。この瞬間、私たちはクッキーを持ってきます(javawebが初めてbooks.jspにアクセスするために初めて選ばれたときに私に渡されました)。このクッキーの重要な値はsaflyjavawebjavawebですが、何ですか? 2冊目の本を選択するJavaにはCookieが付属していません(SaflyJavaなし)
次に、cooks.jspを入力します
if(cookiename.startswith( "safly")){bookcookies.add(c);}したがって、saflyjavawebjavawebをBookCookies(選択した本リストを保存)に入れてから、Saflyjavajavaが作成されます。 Renturnをクリックしたら、Cookies.jspを逆にします
。 。 。 。 3回目、4回目、5回目の本を選ぶとき、それは同じプロセスです。 books.jspで5冊の本を選択した場合、これらの5冊の本のいずれかを選択するときにそれを扱う方法は?
c.getValue()。選択した本を取得するために(book)に等しい。このCookieを削除してから、もう一度追加してCookie.jspコードに戻します。
tempcookie.setmaxage(0); response.addcookie(tempcookie);
books.jspで5冊の本を選択し、5冊の本ではない6冊目の本を選択した場合、それを扱う方法は?
ちょうどtempcookie = bookcookies.get(0); 5冊の本の最初の本を取り出してから、tempcookie.setmaxage(0);最初のCookieを削除してから、Cookie.jspにCookieを作成します。
ここにいくつかのスクリーンショットがあります:
クッキーのアクションパス
Cookie2.jsp
<%@ page Language = "Java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <タイトル> cookie = neart = </head> < request.getCookies(); if(cookies!= null && cookies.length> 0){for(cookie cookie:cookies){if( "cookiepath" .equals(cookie.getName())){cookievalue = cookie.getValue();}}} if(cookievalue!= null){out.print(cookievalue);} else {out.print( "no specied cookie");}%> </body> </html>writercookie.jsp
<%@ page Language = "Java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <タイトル>タイトル<ディレクトリでは、現在のディレクトリの前のディレクトリで動作することはできません//は、SetPathを介してCookieの範囲を設定できます。/サイトCookie = new Cookie( "cookiepath"、 "cookiepathvalue"); cookie.setpath(request.getcontextpath(); response.addcookie(request.getContextPath(); cookie2.jsp </a> </body> </html>
cookie2.jspへは、writercookie.jsp上部ディレクトリにアクセスするcookie2.jspです
上記は、Cookieを使用してCookieを使用したJavaweb開発です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!