Artikel ini menjelaskan secara detail:
1. Demonstrasi penggunaan dasar cookie
2. Tunjukkan izin akses cookie
3. Demonstrasi penghapusan kue
4. Gunakan cookie untuk menampilkan terakhir kali pengguna masuk
5. Gunakan teknologi cookie untuk menampilkan beberapa gambar yang baru saja dijelajahi oleh pengguna
6. Uji berapa banyak cookie dan seberapa besar cookie maksimum browser Firefox?
1. Demonstrasi penggunaan dasar cookie
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <h1> Demonstrate Cookie Technology</h1> <a href="CookieDemo">Demonstrate Basic Penggunaan cookie </a> <br/> </body> </html>
Web.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <Web-app Versi = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http:/www.w3.org/org/2001 =" http:/www.w3.org/org/p21 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>CookieDemo</servlet-name> <servlet-class> cn.hncu.servlets.cookiedemo </servlet-class> </servlet> <servlet-mapping> <servlet-name> cookiedemo </servlet-name> <rour-pattern> </cookiedemo </url-pola> </servlet-mapping> <dreading-list> </cookiedemo </url-pola> </servlet-mapping> <dreading-file-list> </cookion-pattern> </servlet-mapping> <dreading-list> <cought-file>
Cookiedemo.java:
Paket cn.hncu.servlets; impor java.io.ioException; impor java.io.printwriter; impor java.net.urldecoder; impor javax.net.urlencoder; impor java.random; impor javax.servlet. javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse (htprosRservons, htcervlet httpservlet {public void DOGEG (htttpressvons (htpracrons httpservlet {public void doget ServletException, ioException {response.setContentType ("Teks/html; charset = utf-8"); Printwriter out = response.getWriter (); // Tulis cookie ke klien acak r = acak baru (); int n = r.nextint (100); String name = "jack"; // format cookie: key = value cookie c = cookie baru ("name", name+n); C.Setmaxage (60*60); // Atur waktu kedaluwarsa, dalam detik C.SetPath (request.getContextPath ()); // jalur ini adalah:/Nama proyek // dalam mekanisme cookie, izin dikendalikan melalui jalur. Hanya servlets dengan jalur yang sama dengan jalur atau subpath yang dapat mengakses cookie // jika jalur cookie ditetapkan sebagai direktori root proyek, maka semua servlet di bawah proyek dapat mengakses responsnya. // Cookie demonstrasi ini memiliki string Cina str = "I Bring Chinese"; str = urlencoder.encode (str, "utf-8"); // Setel encoding dalam bahasa Cina! Lai Lai cookie encoding urlencode cstr = cookie baru ("str", str); // Jika setmaxage tidak diatur, browser kedaluwarsa segera setelah ditutup cstr.setpath ("/"); response.addcookie (cstr); // Baca cookie cs [] = request.getCookies (); // Baca cookie if (cs! = Null) {// waspadalah untuk (cookie cc: cs) {string name2 = cc.getName (); String val = cc.getValue (); val = urldecoder.decode (val, "UTF-8"); // Ternyata itu akan memecahkan kode seperti yang dikodekan! Decoding Cina, ASCII seperti itu! out.print (name2+"="+val+"<br/>"); }} out.print ("Cook berhasil disimpan!"); }}Hasil demonstrasi:
Pada klik pertama! Sesi akan dibahas lain kali! Tomcat secara otomatis dihasilkan dan dikirim ke klien!
Saat masuk lagi!
Nama+n Karena N di belakang sedang dihasilkan secara acak, klik ini selalu menampilkan informasi dari yang sebelumnya!
2. Tunjukkan izin akses cookie
index.jsp:
<a href="servlet/CookieDemo2">Demonstrate the access permissions of cookies</a><br/>web.xml:<servlet> <servlet-name>CookieDemo2</servlet-name> <servlet-class>cn.hncu.servlets.CookieDemo2</servlet-class> </servlet> <servlet-mapping> <servlet-name> cookiedeMo2 </servlet-name> <rerl-pola>/servlet/cookiedeMo2 </uRl-pola> </servlet-mapping>
Cookiedemo2.java:
package cn.hncu.servlets;import java.io.IOException;import java.io.PrintWriter;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CookieDemo2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType ("Teks/html; charset = utf-8"); Printwriter out = response.getWriter (); // Tulis cookie ke klien acak r = acak baru (); int n = r.nextint (100); Cookie c = cookie baru ("usia", ""+n); c.setMaxAge(60*60);//Expiration time c.setPath( request.getContextPath()+"/servlet/CookieDemo2");//In the Cookie mechanism, permissions are controlled through path // Since the url-pattern of CookieDemo is the project root directory/CookieDemo, and is not a subdirectory of the path set by the current cookie, the cookie cannot be accessed //Note! Lai Lai Jika jalan berbeda, maka cookie adalah objek yang berbeda, yang berarti bahwa cookie dengan nama yang sama tidak akan tumpang tindih! response.addcookie (c); // Baca cookie yang dikirim dari cookie klien CS [] = request.getCookies (); if (cs! = null) {for (cookie cc: cs) {string name = cc.getName (); String val = cc.getValue (); out.print ("22222-"+name+"="+val+"<br/>"); }} out.print ("Cookie disimpan dengan sukses!"); }}Hasil demonstrasi:
Pertama masukkan halaman cookiedemo2 untuk mengakses cookiedemo name-cookie
Masukkan halaman cookiedemo lagi, dan tidak dapat mengakses cookiedemo2 usia-kookie
3. Demonstrasi penghapusan kue
index.jsp:
<a href = "servlet/delcookiedemo"> menunjukkan penghapusan cookie </a> <br/>
Web.xml:
<servlet> <servlet-name> delcookiedemo </servlet-name> <servlet-class> cn.hncu.servlets.delcookiedemo </servlet-class> </servlet> <servlet-Mapping> <servlet> </servlet/delcooko </servlet-name> <riglet-pigher>/servlet> delcookiedemo </servlet-name> <rerr-pather>
Delcookiedemo.java:
Paket cn.hncu.servlets; import java.io.ioexception; impor java.io.printwriter; import javax.servlet.servletException; import javax.servlet.htpservlet; impor javax.servlet.htp.htpps. javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DelCookieDemo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType ("Teks/html; charset = utf-8"); Printwriter out = response.getWriter (); Cookie cs [] = request.getCookies (); if (cs! = null) {for (cookie c: cs) {// Untuk melintasi cookie "name", servlet saat ini harus memiliki izin membaca, yaitu, pola url dari servlet harus menjadi jalan setapak yang ditetapkan oleh cookie atau sub-path dari jalur yang ditetapkan oleh itu // hapus nama cookie if (". request.getContextPath ()); // Saat menghapus, izin dinilai melalui kalimat ini! Ini harus persis sama dengan jalur asli yang diatur untuk menghapus, jika tidak, itu tidak dapat dihapus! // Untuk kalimat sebelumnya, pemahaman pribadi saya adalah: karena jika pengaturan jalan Anda berbeda, itu sebenarnya seperti cookie baru dibuka. Waktu kedaluwarsa cookie baru adalah 0, dan namanya adalah "nama" c.setmaxage (0); // Saat kedaluwarsa, lihat diatur ke 0, yang berarti penghapusan --- logo penghapusan hanya diatur di sini untuk merespons.addcookie (c); }}}}}}Hasil demonstrasi:
Saat ini, nama masih ada.
Kami mengunjungi Delcookiedemo.
Pergi ke tautan pertama yang dibaca:
Namanya hilang!
Firefox akan secara otomatis menghapus cookie kedaluwarsa:
4. Gunakan cookie untuk menampilkan terakhir kali pengguna masuk
index.jsp:
<a href = "LogInservlet"> Gunakan cookie untuk menampilkan terakhir kali pengguna masuk </a>
Web.xml:
<servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>cn.hncu.servlets.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping>
LOGINSERVLET.java:
Paket cn.hncu.servlets; impor java.io.ioException; impor java.io.printwriter; impor java.text.simpledateFormat; impor java.util.date; import javax.servlet.servletException; impor javax.servlet.http.cooker; javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse (htpresservlet publicervlet, htcervlet httpservlet {public void DOGET (htpresRpservlet ServletException, ioException {response.setContentType ("Teks/html; charset = utf-8"); Printwriter out = response.getWriter (); out.println ("<! Doctype html public/"-// w3c // dtd html 4.01 transisi // en/">"); out.println ("<Html>"); out.println ("<Head> <title> Demonstrasi menggunakan cookie untuk menampilkan waktu login terakhir dari pengguna </iteme> </head>"); out.println ("<body>"); // Baca cookie cookie cs klien [] = request.getCookies (); boolean boo = false; if (cs! = null) {for (cookie c: cs) {// travel if ("logintime" .equals (c.getName ())) {string val = c.getValue (); long dt = long.parselong (val); Tanggal D = Tanggal Baru (DT); SimpleDateFormat sdf = new SimpleDateFormat ("yyyyy tahun mm bulan dd tanggal hh: mm: ss"); out.print ("Waktu login terakhir Anda adalah:"+sdf.format (d)); boo = true; merusak; }}} if (boo == false) {// berarti tidak ada catatan akses dalam satu tahun sebelumnya! Karena waktu kedaluwarsa yang kami hemat di bawah ini adalah out.print ("Anda berkunjung untuk pertama kalinya dalam setahun terakhir ..."); } // Apakah itu pengguna baru atau lama, cookie akan dibuat dalam dua kali terakhir dan ditulis kepada klien. Apa yang semula saya miliki adalah tanggal pembaruan waktu d = tanggal baru (); Cookie c = cookie baru ("LogInime", ""+d.gettime ()); C.SetPath (request.getContextPath ()); C.Setmaxage (60*60*24*30*12); response.addcookie (c); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Hasil demonstrasi:
Kunjungan pertama;
Kunjungi lagi:
5. Gunakan teknologi cookie untuk menampilkan beberapa gambar yang baru saja dijelajahi oleh pengguna
index.jsp:
<a href = "jsps/show.jsp"> Lihat teknologi cookie yang digunakan untuk menampilkan beberapa gambar yang baru-baru ini dijelajahi oleh pengguna </a>
Web.xml:
<servlet> <servlet-name> showerVlet </servlet-name> <servlet-class> cn.hncu.servlets.showservlet </servlet-class> </servlet> <servlet-Mapping> <servlet-name> </servlet-name> <rerl-pola>/showimg </url-pattern> </servlet-name>
show.jsp:
<%@ page impor = "java.io.file"%> <%@ page language = "java" import = "java.util.*" pageenCoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en">. BORDER: 0PX SOLID #000; Lebar: 100px; Tinggi: 100px; meluap: tersembunyi; } .span img {max-width: 100px; _width: ekspresi (this.width> 100? "100px": this.width); } .spans {border: 0px solid #000; Lebar: 50px; Tinggi: 50px; meluap: tersembunyi; } .spans img {max-width: 50px; _width: ekspresi (this.width> 50? "50px": this.width); } </tyle> </head> <hody> <h1> Lihatlah teknologi cookie yang digunakan untuk menampilkan beberapa gambar yang baru-baru ini dijelajahi oleh pengguna </h1> <a href = "/mycookieweb/jsps/show.jsp" TAMBAHAN TINGKAT KEAUTAN-baru-baru ini </a> </a> <h3> Teknologi cookie yang baru-baru ini untuk menampilkan beberapa gambar yang ditelusuri oleh pengguna </a> <h3> <h3> baru-baru ini. views-> <% string str = null; Cookie cs [] = request.getCookies (); if (cs! = null) {for (cookie c: cs) {if ("gambar" .equals (c.getname ())) {str = c.getValue (); // ***. jpg break; }}} if (str! = null) {string strs [] = str.split (","); untuk (string s: strs) {%> <span> <img src = "<%= request.getContextPath ()%>/imgs/<%= s%>"/> </span> <%}}%> <br/> <hr/> <br/> <%// gunakan file untuk menelusuri semua gambar dan menampilkannya. String path = getSerVletContext (). GetRealPath ("/imgs"); //System.out.printf(path); //D:/apache-tomcat-7.0.30/webapps/mycookieweb/jsps file file = java.io.file baru (path); File [] file = file.listFiles (); if (file! = null) { %> < % untuk (file f: file) {string imgname = f.getName (); %> <span> <a href = "<%= request.getContextPath ()%>/showimg? img = <%= imgname%>"> <meg src = "<%= request.getContextPath ()/Imgs/<%= Imgname%>"/</a> </Imgs/<%= ImGname%>/"/</a> </iMgs/<%= IMGNAME%>"/</a> <//Imgs/<%=%%>%} <%} <%} <%} <%> <%} <%> <%>Showervlet.java:
Paket cn.hncu.servlets; import java.io.ioexception; impor java.io.printwriter; import javax.servlet.servletException; import javax.servlet.htpservlet; impor javax.servlet.htp.htpps. javax.servlet.http.httpservletResponse; kelas publik showerVlet memperluas httpservlet {public void doGet (httpservletRequest, httpservletResponse response) lempar servletException, ioException {response.setConTentType ("TEPPLET/TEXT/TEPPS;" Printwriter out = response.getWriter (); out.println ("<! Doctype html public/"-// w3c // dtd html 4.01 transisi // en/">"); out.println ("<Html>"); out.println ("<head> <title> a servlet </iteme> </head>"); out.println ("<body>"); String img = request.getParameter ("img"); String imgstr = "<img src = '"+request.getContextPath ()+"/imgs/"+img+"' //>"+img+"'// Gunakan cookie untuk merekam informasi gambar yang dikunjungi oleh cookie pengguna cs [] = nail. if (gambar ".Sequals (c.getName ())) {// Saya sudah memiliki cookie cookie IMGS = C.GetValue (); if (imgstrs [i] .equals (img)) {if (i == 1 && imgstrs.length == 2) {imgs = imgstrs [i]+","+imgstrs [0]; imgs = imgstrs [i]+","+imgstrs [0]+","+imgstrs [1]; imgs = img+","+imgs; // Akan sedikit merepotkan untuk menggunakan metode berikut: imgs+","+img if (imgs.split (","). Panjang> 3) {// Jika gambar berkunjung lebih dari 3 kali iMgs = iMgs.substring (0, iMgs.Lastindex ("tidak ada (" tidak ada ("tidak ada (" tidak ada. " Ini, yang terbaik adalah membalikkan urutan penambahan di atas mencegah gambar duplikat.//imgs+","+img metode: imgs = imgs+","+img; if (imgs.split (","). Length> 3) {// Jika gambar mengunjungi lebih dari 3 kali imgs = imgs.substring (imgs.indexof (",")+1, imgs.length ()); }*/} c.setValue (imgs); // Perbarui C.SetMaxage (60*60*24*30); c.setpath ("/"); // setara dengan hak akses yang sepenuhnya santai, yaitu, semua proyek dapat mengakses respons.addcookie (c); boo = true; merusak; }}} if (boo == false) {// Tunjukkan kunjungan pertama, yaitu, tidak ada penelusuran gambar di cookie browser c = cookie baru ("gambar", img); c.setmaxage (60*60*24*30); c.setpath ("/"); response.addcookie (c); } out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Hasil demonstrasi:
6. Uji berapa banyak cookie dan seberapa besar cookie maksimum browser Firefox?
index.jsp:
<a href = "servlet/howmanycookieserver"> uji jumlah maksimum cookie dan satu cookie yang didukung browser firefox </a> <br/>
Web.xml:
<servlet> <servlet-name> howmanycookie </servlet-name> <servlet-class> cn.hncu.servlets.howmanycookie </servlet-class> </servlet> <servlet-mapping> <servlet> howmanycookie </servlet-name> <rerr-pattern>/servlet/howyercookie </servlet-name> <rerr-pattern>/servlet/howyervy </servlet-name> <rerr-pattern>
Howmanycookie.java:
Paket cn.hncu.servlets; impor java.io.ioException; impor java.io.printwriter; impor java.net.urldecoder; impor javax.servlet.servletException; import javax.servlet.htp.cookie; impor javax.servlet javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HowManyCookie extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter (); /* // BUM TEST-FIREFOX 47.0.1 mendukung hingga 110 untuk (int i = 1; i <= 110; i ++) {cookie c = cookie baru ("TextNum"+i, ""+i); c.setmaxage (60*15); c.setpath ("/"); response.addcookie (c); } */// Ukuran tes --- 4092 byte adalah string penyimpanan cookie tunggal terbesar yang didukung S = ""; untuk (int i = 0; i <4092; i ++) {s+= "1"; } Cookie c = cookie baru ("test", s); c.setmaxage (60*15); c.setpath ("/"); response.addcookie (c); Cookie cs [] = request.getCookies (); // Baca cookie if (cs! = Null) {// waspadai untuk (cookie cc: cs) {string key = cc.getName (); String val = cc.getValue (); out.print (key+"="+val+""); }}}}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.