1. Apa itu cookie? Komentar netizen Baidu
Sederhananya, cookie adalah informasi yang disimpan sementara di komputer Anda oleh server sehingga server dapat menggunakannya untuk mengidentifikasi komputer Anda. Saat Anda menjelajahi situs web, server web terlebih dahulu akan mengirim sejumlah kecil informasi untuk meletakkannya di komputer Anda. Ketika Anda mengunjungi situs web yang sama lain kali, server web terlebih dahulu akan memeriksa apakah ada informasi cookie yang ditinggalkannya terakhir kali. Jika demikian, pengguna akan dinilai berdasarkan konten di cookie dan mengirimi Anda konten halaman web tertentu.
2. Dimana cookie?
3. Bisakah cookie dihapus?
4. Prinsip Implementasi Cookie
Pertama kali saya meminta browser, di toko kue browser, tidak ada cookie,
Kunjungan pertama tidak mengandung cookie. Browser menambahkan header permintaan cookie ke pesan permintaan HTTP untuk meneruskan kembali cookie ke server web. Browser akan menyimpan fragmen informasi cookie dalam bentuk pasangan "nama/nilai" (pasangan nilai nama). Lain kali Anda mengakses, server web menambahkan header respons set-cookie ke pesan respons HTTP untuk mengirim informasi cookie ke browser.
Mari kita lihat cookie berdasarkan kenyataan
Buat cookie.jsp, atur sesi = "false" untuk pengamatan mudah
<%@ halaman bahasa = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%//Create a cookieCookie Cookie = new Cookie ("name", "wyf"); response.addcookie (cookie);%> </body> </html>Kami pertama -tama mengakses file cookie.jsp, masukkan di IE
http: // localhost: 8080/day01/cookie.jsp
Di header permintaan, Anda dapat melihat bahwa kunjungan pertama tidak membawa cookie.
Di header respons, dikirim kembali melalui set-cookie dan disimpan di toko kue lokal browser
Kami mengakses file cook.jsp untuk kedua kalinya untuk melihat apakah ada perubahan
Di header permintaan, Anda dapat melihat bahwa akses adalah permintaan yang membawa cookie dari area penyimpanan cookie lokal di browser.
Berikut ini adalah header respons:
Mari kita gunakan grafik interaktif untuk memahami mekanisme cookie:
Mari kita lihat kreasi dan perolehan cookie
Kode di cookie.jsp berarti: jika tidak ada cookie dalam permintaan, itu akan dibuat dan dikembalikan. Jika permintaan berisi cookie, itu akan menghasilkan pasangan nilai kunci cookie (nama-nilai)
<%@ halaman bahasa = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%Cookie[] cookies = request.getCookies();if(cookies ! = null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getname ()+":"+cookie.getValue ());}} lain {out.print ("No Cookie, sedang dibuat dan dikembalikan"); cookie cookie = new baru Cookie ("name", "wyf"); response.addcookie (cookie);}%> </body> </html>Kunjungan pertama
Kunjungan kedua
Operasi di atas adalah bahwa kita perlu menutup browser lagi. Mengapa kita debugging?
Karena secara default, cookie adalah cookie tingkat sesi, disimpan di kernel browser, dan pengguna dihapus setelah keluar dari browser. Jika Anda ingin browser menyimpan cookie di disk, Anda perlu menggunakan Maxage, yang ada dalam hitungan detik
Mari kita lihat cookie yang gigih
<%Cookie [] cookies = request.getCookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getname ()+":"+cookie.getValue ());}} lain {out.print ("no cookie = cookie ()); Cookie ("name", "wyf"); cookie.setmaxage (30); response.addcookie (cookie);}%>cookie.setmaxage (30); Diatur ke 30 detik, jadi saya tidak akan mengambil tangkapan layar di sini. Katakan saja itu atas nama Anda. Jika Anda tidak memiliki cookie untuk pertama kalinya, Anda dapat membuat cookie untuk kedua kalinya. Jika Anda tidak memiliki cookie untuk kedua kalinya, Anda dapat menutup browser dan mengakses dalam 30 detik. Anda masih meminta cookie untuk pasangan nilai kunci, bukan prompt sebelumnya, Anda tidak memiliki cookie untuk cookie untuk yang sebelumnya. Anda tidak memiliki cookie untuk cookie untuk yang sebelumnya.
Login otomatis
Login.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" Text/html; charset = uTf-8 "> <title> memasukkan judul di sini </title> </homl;" form = "FORM-8"> <title> judul di sini </title> </head lospon = "form =" form-8 "> <title> judul di sini </title> </head lospon =" form = "form-8"> <title "judul di sini </title> </head lospon =" form = "ucction" ucapan " type = "text" name = "name"/> <input type = "kirim" value = "sumit" // </form> </body> </html>
Success.jsp
<%@ halaman bahasa = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" Text/html; Charset = UTF-8 "> <title> Judul Content Here </title> </head </head </body = uTF-8"> <title> judul di sini </title> </head </head> body = uTf-8 "> <title> judul di sini </title> </head </head- 2 in the cookie, and set the time of cookie String name = request.getParameter("name");if (name != null && !name.trim().equals("")) {Cookie cookie = new Cookie("nameCookie", name);cookie.setMaxAge(60);response.addCookie(cookie);} else {//If there is no parameter, you can log in with a cookie dan membaca informasi pengguna dari cookie. Jika ada, cetak cookie pesan selamat datang [] cookies = request.getCookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookies) {string cookiename = cookie.getname (); if ("nameCookie" .sequals (cookeename)) {string vale = cookie (if (nameCookie ". ! = null &&! name.trim (). Equals ("")) {out.print ("Hello" + name);} else {// Jika tidak ada parameter permintaan dan tidak ada cookie, redirect ke login.jspresponse.sendredirect ("Login.jsp");}%> </body> html> Pertama kali Anda mengunjungi http: // localhost: 8080/day01/login.jsp, masukkan nilai parameter nama dan kirimkan. Dalam Success.jsp, pertama -tama dapatkan nilai nama parameter yang dikirimkan. Jika bukan nol, maka atur cookie secara langsung, simpan nilai nama parameter, dan kemudian output nilai parameter nama pada halaman. Ketika Anda mengunjungi kedua kalinya, Anda langsung memasukkan http: // localhost: 8080/day01/success.jsp,
Sejak saat ini kami membawa nilai nama parameter, kami hanya perlu mendapatkan nilai dari nilai nilai cookie dan kemudian menampilkan output
Tunjukkan Sejarah Belanja Terbaru
books.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = UTF-8 "> <title> memasukkan judul di sini </title> </head </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.jsp? ajs = ajs = ajs = ajsp = ajsp = ajsp = ajsp = ajsp = ajsp = ajsp = ajsp = ajsp = ajsp = ajsp? ajsp? Ajsp = ajsp? Ajsp? Books = ajsp? Ajsp? Ajsp? href="book.jsp?book=JavaScript">JavaScript</a><a href="book.jsp?book=Android">Android</a><a href="book.jsp?book=Jbpm">Jbpm</a><br><br><%//Get all cookiesCookies[] cookies = request.getCookies();//Cookies from the filtered Pesan, jika cookiename adalah atguigu_book_, memenuhi syarat jika (cookies! = Null && cookies.length> 0) {for (cookie c: cookies) {string cookiename = c.getname (); if (cookiename.startswith ("aman")) {// show (); if (cookiename.startswith ("safy") {// show (); if (cookiename.startswith ("safy") {// show (); if (cookiename.startswith ("safy") {// show (); cookievalueout.println (c.getValue ()); out.print ("<br>");}}}%> </body> </html>book.jsp
<%@page Impor = "java.util.arraylist"%> <%@page language = "java" contentType = "text/html; charset = UTF-8" pageEncoding = "UTF-8"%> <! Doctype html public "-// w3c // dtd html 4.01 public html"-// w3c // dtd html 4.01 public html "-// w3c // dtd html 4.01 public html"-/w3c // dtd html 4.01 public html "-/w3c // dtd html 4.01 publis "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = UTF-8 "> <title- Title" BICHEM. %> <br> <br> <a href = "books.jsp"> return </a> < %string book = request.getParameter ("book"); // tentukan cookie yang akan dihapus cookie [] cookies = request.getcookies (); // simpan semua cookie yang dimulai dengan safyarraylist <cookie> cookie.getcookies (); The cookie matched by the incoming book Cookie tempCookie = null;if(cookies!=null&&cookies.length>0){for(Cookie c:cookies){String cookieName = c.getName();if(cookieName.startsWith("Safly")){bookCookies.add(c);//After selecting 5, selecting one of the 5 if (c.getValue (). Equals (book)) {out.print ("c.getValue (). Equals (book)"); tempcookie = c;}}}}} // Pilih 5 buku selain 5 buku ini (bookcookies.size ()> = 5 && tempcookie == nouls (bookcookies.size ()> = 5 && tempcookie == noule) {0) {0) {0) {0) {0 bookcookies. //out.print("TempCookie == null ");} // Jika ada di dalamnya, hapus BookCookie itu sendiri, hapus cookie duplikat dalam daftar, dan lewati kembali jika (tempcookie! = null) {tempcookie.setmaxage (0); response.addcookie (tempcookie);} // kembalikan buku yang disahkan dari books.jsp sebagai cookie cookie cook = cookie baru ("safly"+book); response.addcookie (masak);%> </body> </html>Mari kita bicara tentang hubungan logis:
Di Books.jsp, di bawah ini adalah daftar buku.
Javaweb
Jawa
Peramal
Ajax
Javascript
Android
Jbpm
Saya secara acak memilih tautan (seperti Javaweb) untuk melompat ke book.jsp. Pertama kali saya mengaksesnya, tidak ada cookie, jadi saya menyebut metode berikut dari buku.jsp dan membuat cookie. Di halaman book.jsp, klik kembali untuk kembali ke books.jsp dan keluarkan cookievalue yang dibawa oleh cooks.jsp, dan kemudian tampilkan daftar buku yang dipilih.
Cookie cook = cookie baru ("aman"+buku, buku); response.addcookie (masak); Sekarang kami telah kembali ke Books.jsp dan telah memilih buku Javaweb. Kami memilih buku (dengan asumsi java), dan kemudian melompat ke books.jsp. Pada saat ini, kami akan membawa cookie (itu diteruskan kepada saya ketika Javaweb dipilih untuk pertama kalinya untuk mengakses Books.jsp). Nilai kunci dari cookie ini adalah Saflyjavawebjavaweb, tapi apa? Memilih buku kedua Java tidak datang dengan cookie (tidak ada saflyjava)
Kemudian masukkan cooks.jsp
if (cookiename.startswith ("safly")) {bookcookies.add (c);}Jadi, masukkan Safyjavawebjavaweb ke dalam buku buku (menyimpan daftar buku yang dipilih) dan kemudian, Saflyjavajava akan dibuat. Saat Anda mengklik Renturn, berikan cookie.jsp Reverse
. . . . Saat memilih buku untuk 3, 4, dan 5 kali, itu adalah proses yang sama. Jika Anda memilih 5 buku di Books.jsp, bagaimana menghadapinya saat memilih salah satu dari 5 buku ini?
C.GetValue (). Equals (Buku) untuk mendapatkan buku yang dipilih. Kita perlu menghapus cookie ini dan kemudian menambahkannya lagi dan meneruskannya kembali ke kode cookie.jsp sebagai berikut:
tempcookie.setmaxage (0); response.addcookie (tempcookie);
Jika Anda memilih 5 buku di Books.jsp dan memilih buku ke -6 yang bukan 5 buku, bagaimana cara menghadapinya?
Mari kita hanya tempcookie = bookcookies.get (0); Keluarkan buku pertama dari 5 buku, lalu tempcookie.setmaxage (0); hapus cookie pertama, lalu buat cookie kembali ke cookies.jsp
Berikut adalah beberapa tangkapan layar:
Jalur aksi cookie
cookie2.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" konten-tipe "content =" text/html; charset = uTf-8 "> <titlee> masukkan judul di sini </judul> </html; body = uTf-8"> <title- title> judul di sini </title> </head </head body; request.getCookies (); if (cookies! = null && cookies.length> 0) {for (cookie cookie: cookies) {if ("cookiePath" .equals (cookie.getname ())) {cookievalue = cookie.getValue ();}}}} if (cookievalue = cookie.getValue ();}}} if (cookievalue! null) {out.print (cookievalue);} else {out.print ("Tidak ada cookie yang ditentukan");}%> </body> </html>writercookie.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%//can function as the current directory and subdirectories of the current direktori, tetapi tidak dapat bertindak pada direktori sebelumnya dari direktori saat ini // dapat mengatur ruang lingkup cookie melalui setpath,/mewakili direktori root dari cookie situs = cookie baru ("cookiePath", "cookiePathValue"); cookie.setpath (request.getContextPath ()); response.adcookie (cookie.setpath (request.getContextPath ()); response.adcookie (cookie. cookie2.jsp </a> </body> </html>ke cookie2.jsp adalah cookie2.jsp yang mengakses direktori atas writercookie.jsp
Di atas adalah pengembangan Javaweb menggunakan cookie untuk membuat - mendapatkan - kegigihan, login otomatis, catatan belanja, dan jalur fungsi. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!