Cookies adalah file teks yang disimpan di komputer klien, dan menyimpan sejumlah besar informasi trek. Berdasarkan teknologi servlet, JSP jelas dapat memberikan dukungan untuk cookie HTTP.
Biasanya ada tiga langkah untuk mengidentifikasi pelanggan tetap:
Skrip server mengirimkan serangkaian cookie ke browser. Seperti nama, umur, nomor ID, dll.
Browser menyimpan informasi ini secara lokal di komputer jika diperlukan.
Saat berikutnya browser mengirimkan permintaan apa pun ke server, browser juga akan mengirimkan informasi cookie ini ke server, dan kemudian server menggunakan informasi ini untuk mengidentifikasi pengguna atau melakukan hal lain.
Bagian ini akan mengajarkan Anda cara menyetel atau menyetel ulang cookie, cara mengaksesnya, dan cara menghapusnya.
Cookie biasanya disetel di header HTTP (walaupun JavaScript dapat menyetel cookie langsung di browser). Di JSP, pengaturan cookie memerlukan pengiriman header informasi berikut ke server:
HTTP/1.1 200 OKTanggal: Jum, 04 Feb 2000 21:03:38 GMTServer: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: name=xyz; 38 GMT; jalur=/; domain=tutorialspoint.comKoneksi: closeContent-Type: teks/html
Seperti yang Anda lihat, header Set-Cookie berisi pasangan nilai kunci, waktu GMT (Greenwich Mean Time), jalur, dan nama domain. Pasangan kunci-nilai akan dikodekan sebagai URL. Bidang tanggal kedaluwarsa adalah instruksi yang memberi tahu browser kapan browser dapat menghapus cookie ini.
Jika browser Anda dikonfigurasi untuk menyimpan cookie, informasi ini akan disimpan hingga masa berlakunya habis. Jika ada halaman yang dikunjungi pengguna cocok dengan jalur dan nama domain di cookie, browser akan mengirim ulang cookie tersebut kembali ke server. Header di sisi browser terlihat seperti ini:
DAPATKAN / HTTP/1.0Koneksi: Keep-AliveUser-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)Host: zink.demon.co.uk:1126Terima: image/gif, */*Terima- Pengkodean: gzipAccept-Bahasa: enAccept-Charset: iso-8859-1,*,utf-8Kue: nama=xyz
Skrip JSP mengakses cookie ini melalui metode getCookies() di objek permintaan.
Tabel berikut mencantumkan metode yang umum digunakan dalam objek Cookie:
nomor seri | Metode & Deskripsi |
---|---|
1 | public void setDomain(Pola string) menyetel nama domain cookie, seperti w3cschool.cn |
2 | public String getDomain() mendapatkan nama domain cookie, seperti w3cschool.cn |
3 | public void setMaxAge(int expiry) menetapkan periode validitas cookie dalam hitungan detik. Periode validitas default adalah waktu bertahan sesi saat ini. |
4 | public int getMaxAge() mendapatkan masa berlaku cookie dalam hitungan detik, defaultnya adalah -1, yang menunjukkan bahwa cookie akan hidup hingga browser ditutup |
5 | public String getName() mengembalikan nama cookie. Nama tidak dapat diubah setelah dibuat. |
6 | public void setValue(String newValue) menetapkan nilai cookie |
7 | public String getValue() mendapatkan nilai cookie |
8 | public void setPath(String uri) menyetel jalur cookie, yang defaultnya adalah semua URL di direktori halaman saat ini dan semua subdirektori di direktori ini. |
9 | public String getPath() mendapatkan jalur cookie |
10 | public void setSecure(boolean flag) menunjukkan apakah cookie harus dienkripsi untuk transmisi |
11 | public void setComment(String tujuan) menetapkan komentar untuk menjelaskan tujuan cookie. Anotasi dapat berguna ketika browser menampilkan cookie kepada pengguna |
12 | public String getComment() mengembalikan komentar yang menjelaskan tujuan cookie, atau null jika tidak ada |
Mengatur cookie menggunakan JSP melibatkan tiga langkah:
(1) Buat objek Cookie: Panggil konstruktor Cookie, menggunakan nama dan nilai cookie sebagai parameter, keduanya berupa string.
Cookie cookie = Cookie baru("kunci","nilai");
Penting untuk diingat bahwa baik nama maupun nilai tidak boleh mengandung spasi atau karakter berikut:
[ ] ( ) = , " / ? @ : ;
(2) Tetapkan masa berlaku: Panggil fungsi setMaxAge() untuk menunjukkan berapa lama (dalam detik) cookie valid. Operasi berikut menetapkan masa berlaku menjadi 24 jam.
cookie.setMaxAge(60*60*24);
(3) Kirim cookie ke header respons HTTP: panggil fungsi respon.addCookie() untuk menambahkan cookie ke header respons HTTP.
respon.addCookie(cookie);
<% // Tetapkan cookie untuk nama_depan dan nama_belakang Cookie nama depan = Cookie baru("nama_pertama", request.getParameter("nama_pertama")); Cookie Nama Belakang = Cookie baru("nama_akhir",request.getParameter("nama_belakang")); //Setel waktu kedaluwarsa cookie menjadi 24 jam. firstName.setMaxAge(60*60*24); lastName.setMaxAge(60*60*24); // Tambahkan cookie ke header respons respon.addCookie( firstName ; head><title>Mengatur Cookie</title></head><body><center><h1>Pengaturan Cookie</h1></center><ul><li><p><b>Nama Depan:</b><%= request.getParameter("first_name")%></p></li>< li><p><b>Nama Belakang:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
Tempatkan file di atas di direktori <Tomcat instalasi>/webapps/ROOT, lalu kunjungi http://localhost:8080/hello.jsp, Anda akan mendapatkan output berikut:
Coba masukkan Nama Depan dan Nama Belakang, lalu klik tombol kirim. Ini akan menampilkan nama depan dan nama belakang di layar Anda, dan mengatur dua cookie, nama depan dan nama belakang, yang akan dikirim ke server saat Anda mengklik berikutnya. tombol kirim.
Untuk membaca cookie, Anda perlu memanggil metode request.getCookies() untuk mendapatkan array objek javax.servlet.http.Cookie, lalu melakukan iterasi melalui array dan menggunakan metode getName() dan metode getValue() untuk mendapatkan setiap cookie .nama dan nilai.
Mari kita baca cookie dari contoh sebelumnya.
<html><head><title>Membaca Cookies</title></head><body><center><h1>Membaca Cookies</h1></center><% Cookie cookie = null Cookie[] cookie = null; // Dapatkan data cookie, yang merupakan array cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nama dan Nilai Cookie Ditemukan</h2>"); ke dalam saya = 0; i < cookie.panjang; i++){ cookie = cookie[i]; out.print("Nama : " + cookie.getName( ) + ", "); ( )+" <br/>"); } }else{ out.println("<h2>Tidak ada cookie yang ditemukan</h2>");
Jika Anda menyetel cookie nama depan menjadi "John" dan nama belakang menjadi "Player" dan mengunjungi http://localhost:8080/main.jsp, Anda akan mendapatkan keluaran berikut:
Ditemukan Nama Cookie dan Nama Nilai : nama_depan, Nilai: Nama John : nama_akhir, Nilai: Pemain
Menghapus cookie sangat mudah. Jika Anda ingin menghapus cookie, cukup ikuti langkah-langkah di bawah ini:
Dapatkan cookie yang ada dan simpan di objek Cookie.
Tetapkan tanggal kedaluwarsa cookie ke 0.
Tambahkan cookie ini kembali ke header respons.
Program berikut menghapus cookie bernama "first_name". Saat berikutnya Anda menjalankan main.jsp, first_name akan menjadi null.
<html><head><title>Membaca Cookies</title></head><body><center> <h1>Membaca Cookies</h1></center><% Cookie cookie = null Cookie[] cookie = null; // Dapatkan cookie dengan nama domain saat ini, yang merupakan array cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nama dan Nilai Cookie yang Ditemukan</h2> "); untuk (int i = 0; i < cookie.length; i++){ cookie = cookie[i]; if((cookie.getName( )).compareTo("first_name") == 0 ){ cookie.setMaxAge(0); (cookie); out.print("Cookie yang dihapus: " + cookie.getName( ) + "<br/>"); } out.print("Nama : " + cookie.getName( ) + ", "); out.print("Nilai: " + cookie.getValue( )+" <br/>"); tubuh></html>
Mengaksesnya akan memberi Anda output berikut:
Nama dan Nilai Cookies Cookies yang dihapus : nama_depan: nama_depan, Nilai: Nama John : nama_akhir, Nilai: Pemain
Kunjungi http://localhost:8080/main.jsp lagi dan Anda akan mendapatkan hasil sebagai berikut:
Ditemukan Nama Cookies dan ValueName : last_name, Value: Player
Anda juga dapat menghapus cookie secara manual di browser Anda. Klik item menu Alat, lalu pilih Opsi Internet, klik Hapus Cookie untuk menghapus semua cookie.