Latest web development tutorials

JSP Cookie Pengolahan

Cookie adalah file teks yang disimpan di klien, dan mereka menyimpan banyak informasi track. Di dasar teknologi servlet, JSP ternyata dapat memberikan dukungan untuk cookie HTTP.

Biasanya ada tiga langkah untuk mengidentifikasi pengunjung berulang:

  • Script server mengirimkan serangkaian cookie ke browser. Seperti nama, umur, nomor ID, dll
  • Browser menyimpan informasi ini pada komputer lokal, untuk mempersiapkan kontinjensi.
  • Lain kali browser mengirimkan permintaan ke server, itu juga akan dikirim ke server informasi cookie, dan server menggunakan informasi ini untuk mengidentifikasi pengguna atau untuk melakukan beberapa hal-hal lain.

Bab ini akan mengajarkan Anda cara mengatur atau mengatur ulang metode kue, dan bagaimana untuk mengaksesnya dan bagaimana untuk menghapusnya.

JSP Cookie pengolahan kebutuhan encode Cina dan decode, sebagai berikut:

String   str   =   java.net.URLEncoder.encode("中文");            //编码
String   str   =   java.net.URLDecoder.decode("编码后的字符串");   // 解码

Analisis Cookie

Cookie biasanya diatur (meskipun JavaScript dapat diatur secara langsung dalam cookie browser) dalam informasi header HTTP. JSP, mengatur header cookie untuk mengirim informasi berikut ke server:

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2015 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=w3big; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=w3big.com
Connection: close
Content-Type: text/html

Seperti yang Anda lihat, sundulan Set-Cookie berisi sepasang kunci-nilai, sebuah GMT (Greenwich Mean) waktu, jalan, nama domain. pasangan kunci-nilai dikodekan sebagai URL. Validitas lapangan adalah perintah yang memberitahu browser setelah apa waktu Anda dapat menghapus cookie ini.

Jika browser Anda dikonfigurasi untuk menyimpan cookie, maka akan menyimpan informasi sampai mereka berakhir. Jika pengguna mengunjungi halaman manapun sesuai jalur cookie dan nama domain, maka browser akan mengirim ulang cookie kembali ke server. sundulan Browser-side terlihat seperti ini:

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

JSP script untuk mengakses cookie dengan permintaan objek getCookies () metode, yang mengembalikan array obyek Cookie.


Metode Cookie Servlet

Tabel berikut ini berisi benda-benda Cookie metode yang umum digunakan:

Tidak. Metode & deskripsi
1 public void setDomain (pola String)

Mengatur domain cookie, w3cschool.cc seperti
2 public String getDomain ()

Dapatkan domain cookie, w3cschool.cc seperti
3 public void setMaxAge (int kadaluwarsa)

Pengaturan cookie kedaluwarsa, dalam hitungan detik, default berlaku untuk sesi saat ini waktu kelangsungan hidup
4 public int getMaxAge ()

Mendapatkan cookie kedaluwarsa, dalam hitungan detik, default adalah -1, menunjukkan bahwa cookie akan hidup sampai browser ditutup
5 public String getName ()

Mengembalikan nama cookie, nama tidak dapat diubah setelah dibuat
6 public void setValue (String newValue)

Mengatur nilai cookie
7 public String getValue ()

Mendapat nilai cookie
8 public void setPath (String uri)

Pengaturan jalur cookie, default adalah URL saat ini untuk semua direktori halaman, dan semua subdirektori di bawah
9 public String getPath ()

Dapatkan jalur cookie
10 public void setSecure (boolean flag)

Untuk menunjukkan apakah transmisi cookie yang dienkripsi
11 public void setComment (String tujuan)

Pengaturan komentar untuk menggambarkan tujuan cookie. Ketika cookie browser yang disajikan kepada pengguna, komentar akan sangat berguna
12 public String getComment ()

Mengembalikan komentar menggambarkan tujuan cookie, atau null jika tidak ada

pengaturan cookie menggunakan JSP

Gunakan JSP menetapkan cookie terdiri dari tiga langkah:

(1) Buat objek Cookie: memanggil Cookie konstruktor menggunakan nama cookie dan nilai sebagai parameter, mereka string.

Cookie cookie = new Cookie("key","value");

Pastikan untuk diingat bahwa nama-nama dan nilai-nilai tidak dapat berisi spasi atau karakter berikut:

[ ] ( ) = , " / ? @ : ;

(2) Pengaturan ini berlaku: Call setMaxAge () fungsi menunjukkan berapa lama cookie berlaku dalam (dalam hitungan detik). Berikut ini akan mengatur berlaku selama 24 jam.

cookie.setMaxAge(60*60*24); 

(3) mengirimkan cookie ke header respon HTTP: Call () fungsi response.addCookie untuk menanggapi header HTTP untuk menambahkan kue.

response.addCookie(cookie);

contoh Demo

file kode main.jsp adalah sebagai berikut:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<%
   // 编码,解决中文乱码   
   String str = URLEncoder.encode(request.getParameter("name"),"utf-8");  
   // 设置 name 和 url cookie 
   Cookie name = new Cookie("name",
		   str);
   Cookie url = new Cookie("url",
			  request.getParameter("url"));

   // 设置cookie过期时间为24小时。
   name.setMaxAge(60*60*24); 
   url.setMaxAge(60*60*24); 

   // 在响应头部添加cookie
   response.addCookie( name );
   response.addCookie( url );
%>
<html>
<head>
<title>设置 Cookie</title>
</head>
<body>

<h1>设置 Cookie</h1>

<ul>
<li><p><b>网站名:</b>
   <%= request.getParameter("name")%>
</p></li>
<li><p><b>网址:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

Berikut ini adalah bentuk HTML sederhana melalui metode GET untuk mengirimkan data ke file klien main.jsp dan mengatur cookie:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>

<form action="main.jsp" method=GET>
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

Menyimpan kode HTML di atas ke dalam file test.htm.

Menempatkan file dalam direktori saat ini di bawah proyek webcontent jsp (dengan main.jsp direktori yang sama).

Dengan mengunjungi http: // localhost: 8080 / testjsp / test.html main.jsp menyerahkan formulir data ke file, Gif demo yang ditunjukkan di bawah:

Coba mengetik "nama situs" dan "URL", kemudian klik tombol submit, maka akan muncul "nama situs" dan "URL" di layar Anda, dan mengatur "nama situs" dan "URL" dua kue.


Gunakan JSP untuk membaca Cookie

Ingin membaca cookie, Anda akan perlu memanggil request.getCookies () metode untuk mendapatkan array javax.servlet.http.Cookie objek, dan kemudian melintasi array menggunakan metode getName () dan metode getValue () untuk mendapatkan setiap cookie nama dan nilai.

Mari kita membaca contoh terakhir dari cookie, berikut ini adalah file kode cookie.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取 Cookie</title>
</head>
<body>
<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取cookies的数据,是一个数组
   cookies = request.getCookies();
   if( cookies != null ){
      out.println("<h2> 查找 Cookie 名与值</h2>");
      for (int i = 0; i < cookies.length; i++){
         cookie = cookies[i];
        
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
         out.print("------------------------------------<br>");
      }
  }else{
      out.println("<h2>没有发现 Cookie</h2>");
  }
%>
</body>
</html>

Setelah akses browser, output:


Gunakan JSP Hapus Cookie

Hapus Cookie sangat sederhana. Jika Anda ingin menghapus cookie, ikuti langkah-langkah di bawah ini untuk melakukan pada baris:

  • Menjadi cookie yang ada kemudian disimpan dalam sebuah objek Cookie.
  • cookie akan ditetapkan ke 0.
  • cookie ini akan ditambahkan kembali ke header respon.

contoh Demo

Prosedur berikut menghapus cookie bernama "nama" ketika Anda adalah cookie.jsp menjalankan kedua, nama akan null.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取 Cookie</title>
</head>
<body>
<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取当前域名下的cookies,是一个数组
   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("name") == 0 ){
            cookie.setMaxAge(0);
            response.addCookie(cookie);
            out.print("删除 Cookie: " + 
            cookie.getName( ) + "<br/>");
         }
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
         out.print("------------------------------------<br>");
      }
  }else{
	  out.println("<h2>没有发现 Cookie</h2>");
  }
%>
</body>
</html>

Diakses melalui browser, output adalah:

Lain kunjungi http: // localhost: 8080 / testjsp / cookie.jsp, akan mendapatkan hasil sebagai berikut:

Anda dapat melihat lebar name = "70%" "nama" cookie pergi.

Anda juga dapat secara manual menghapus cookie di browser Anda. browser IE dengan mengklik menu Tools, kemudian pilih Internet Options, klik Hapus Cookies, Anda dapat menghapus semua cookie.