Saya tidak terlalu memperhatikannya ketika saya belajar sebelumnya, tetapi hari ini saya kembali dan mempelajari siklus hidup sesi dengan cermat. Sesi disimpan di sisi server, dan umumnya untuk mencegahnya berada di memori server (untuk akses berkecepatan tinggi), Sessinon membuat pertama kali pengguna mengakses server.Perhatikan bahwa hanya mengakses JSP, Servlet, dan program lain yang akan membuat Sesi, dan hanya mengakses sumber daya statis seperti HTML dan IMAGE tidak akan membuat Sesi.
Kapan sesi kedaluwarsa?
1. Server akan menghapus sesi dari memori server yang telah lama tidak aktif, dan sesi akan menjadi tidak valid. Waktu kedaluwarsa default sesi di Tomcat adalah 20 menit.
2. Panggil metode pembatalan Sesi.
Persyaratan sesi untuk browser:
Meskipun sesi disimpan di server dan transparan bagi klien, pengoperasian normalnya masih memerlukan dukungan browser klien. Ini karena Session perlu menggunakan cookie sebagai pengidentifikasi. Protokol HTTP tidak memiliki kewarganegaraan, dan sesi tidak dapat dinilai oleh koneksi HTTP untuk menentukan apakah itu adalah pelanggan yang sama, sehingga server mengirimkan cookie yang disebut JSESSIONID ke browser klien, yang memiliki nilai id sesi (yaitu, nilai pengembalian HttpSession.getId()). Session menggunakan cookie untuk mengidentifikasi apakah itu pengguna yang sama.
Cookie ini dibuat secara otomatis oleh server, dan atribut maxAge-nya biasanya -1, yang berarti bahwa cookie ini hanya valid di browser saat ini, dan tidak dibagikan di antara jendela browser, dan tidak akan valid saat browser ditutup. Oleh karena itu, ketika dua jendela browser pada mesin yang sama mengakses server, dua sesi berbeda dihasilkan. Kecuali untuk jendela baru yang dibuka oleh tautan, skrip, dll. di dalam jendela browser (yaitu bukan jendela yang dibuka dengan mengklik dua kali pada ikon browser desktop, dll.). Jendela turunan ini berbagi cookie jendela induk dan karenanya sesi.
Catatan: Sesi Baru dihasilkan di jendela browser yang baru dibuka, kecuali untuk sub-jendela. Jendela turunan berbagi sesi jendela induk. Misalnya, ketika Anda mengklik kanan pada tautan dan memilih "Buka di jendela baru" di menu pintasan yang muncul, jendela anak dapat mengakses Sesi jendela induk.
Bagaimana jika browser klien menonaktifkan cookie atau tidak mendukung cookie? Misalnya, sebagian besar browser seluler tidak mendukung cookie. Java Web menawarkan solusi lain: penulisan ulang alamat URL. Penulisan ulang alamat URL adalah solusi untuk klien yang tidak mendukung cookie. Prinsip penulisan ulang alamat URL adalah menulis ulang informasi id sesi pengguna ke alamat URL. Server dapat mengurai URL yang ditulis ulang untuk mendapatkan id Sesi. Dengan cara ini, meskipun klien tidak mendukung cookie, sesi dapat digunakan untuk merekam status pengguna. Kelas HttpServletResponse menyediakan encodeURL (url string) untuk mengimplementasikan penulisan ulang alamat URL, yang secara otomatis menentukan apakah klien mendukung cookie. Jika klien mendukung cookie, URL akan ditampilkan apa adanya. Jika klien tidak mendukung cookie, id sesi pengguna ditulis ulang ke dalam URL.
Catatan: TOMCAT menentukan apakah browser klien mendukung cookie berdasarkan apakah cookie disertakan dalam permintaan. Meskipun klien dapat mendukung cookie, karena tidak ada cookie yang dibawa pada permintaan pertama (karena tidak ada cookie yang bisa), alamat URL yang ditulis ulang akan tetap memiliki jsessionid di alamat tersebut. Server telah menulis cookie di browser pada kunjungan kedua, sehingga alamat URL yang ditulis ulang tidak akan memiliki jsessionid di alamat tersebut.
|