Baru -baru ini, saya telah melakukan proyek yang memiliki persyaratan. Saya ingin mengimplementasikan fungsi login otomatis. Dengan memeriksa informasi yang relevan, saya berencana untuk menggunakan pemantauan sesi untuk melakukannya. Berikut ini adalah daftar metode untuk mengonfigurasi monitor:
1. Tambahkan kode berikut ke file web.xml proyek:
<!-Tambahkan Sesi Pendengar-> <dengarerer> <Distener-Class> Path listener </engeaner-class> </engeaner>
2. Tulis kelas Java.
Kelas Publik Sesi SesiMerener mengimplementasikan httpsessionListener {public void sessioncreated (httpsessionEvent arg0) {// SimpleDateFormat dieksekusi saat sesi dibuat SimpleFormat SimpleFormat = new SimpleDateFormat ("MM-SS-MS"); String NowTimes = SimpleFormat. "+SEKARANG+" _ "+u); httpsession ses = arg0.getSession (); string id = ses.getId ()+" _ "+SES.getCreationTime ();} public void sessionDestroyed (httpsessionEvent arg0) {// SimpleateFormat ketika sesi faging fag fag fag fag failing = SimpleDateFormat ("MM-SS-MS"); String nowtimes = SimpleFormat.Format (tanggal baru ()); //System.out.println("session telah kedaluwarsa .. waktu akhir: "+sekarang);}}Setelah konfigurasi selesai, saya berhasil memasukkan metode SesiesDestroyed setelah sesi berakhir. Saya siap melakukan operasi lompatan halaman. Tiba -tiba saya mengetahui cara menulis lompatan. Saya terpana dan terus menjelajahi internet untuk bertanya kepada master. Saya menemukan bahwa monitor ini dilakukan dengan beberapa pemrosesan statistik latar belakang dan tidak dapat menyadari fungsi lompatan halaman.
Saya hanya bisa melepaskan metode ini dan mulai menggunakan filter untuk mengimplementasikannya
1. Tambahkan konfigurasi filter di web.xml
<filter> <nilter-name> sessionFilter </tiler-name> <nilter-class> com.orchestrall.web.helper.session.SessionFilter </filter-class> </tiler> <nilter-Mapping> <Tinfter-name> SesionFilter </filter-name> <ruRl-pola>/Action/Action/*</url-Pattern> </filter/</Filter
2. Buat kelas sesi baru untuk mengimplementasikan antarmuka filter.
Sesi Public ClassFilter mengimplementasikan filter {public void dashing () {// TODO Metode yang dihasilkan otomatis Stub} public void dofilter (Permintaan ServletRequest, Respons ResponServetseFetRequest, httpservest httpressception, httpservest httpresserves, httpresponse = (httpservletResponse) respons; httpsession session = httpRequest.getSession (); // Masuk di UrlString LoginUrl = httprequest.getContextPath () + "/admin/login.jsply; htruquest = htruquest = htruquest = htruquest = htruquest = htruquest = htruquest = htruquest = htruquest = htruquest = htruquest = htruquest = htreques; url.substring (url.LastIndexOf ("/")); // Pemrosesan batas waktu, AJAX Permintaan Timeout menetapkan status timeout, dan waktu permintaan permintaan akan mengembalikan prompt dan redirect if (path.indexof (". (httpRequest.getHeader ("X-Requested-with")! = null && httpRequest.getheader ("X-Requested-with"). EqualSignorecase ("xmlhttpRequest") {httpresponse.addheader ("sessiontatus", "timeout", "timeout", httpresponse.addheader ("sessiontatus", "Timeout", "timeout", "seatures", "httpresponse.addheader (" sessiontatus "," timeout " loginurl); rantai.dofilter (permintaan, respons); // tidak mungkin, jika tidak permintaan akan kesalahan} else {string str = "<script language = 'javaScript'> alert ('sesi kedaluwar "';</script>";response.setContentType("text/html;charset=UTF-8");// Solve Chinese garbled try {PrintWriter writer = response.getWriter();writer.write(str);writer.flush();writer.close();} catch (Exception e) {e.printStackTrace();}}} else {chain.dofilter (permintaan, respons);}}@overridepublic void init (filterconfig arg0) melempar servletException {// todo metode yang dihasilkan otomatis}}}3. Klien JS, Digunakan untuk AJAX Request Sesi Timeout
Untuk jQuery
<type skrip = "Text/JavaScript"> $ (Dokumen) .AJAXComplete (function (event, xhr, pengaturan) {if (xhr.getResponseader ("sessionStatus") == "timeout") {if (xhr.getResponseader ("LOGINPATH") {if if (xhr.getResponseader ("Log!" window.location.replace (xhr.getResponseHeader ("LoginPath")); </script>Permintaan AJAX untuk EXTJS
Ext.Ajax.on ('RequestComplete', CheckUserSessionStatus, this); function checkUserSessionStatus (conn, response, options) {if (response.getResponseaderer ("sessionStatus") == 'timeout') {if (response.getResponseader ("LOGINPATH")) {if response.getReseader ("LOGINPATH")) {"if response.geteseader (" LOGINPATH ")) {if response. Lagi! "); window.top.location.href = response.getResponseader (" LoginPath ");} else {waspada (" Permintaan batas waktu, silakan masuk lagi! ");}}}}Jika permintaan AJAX tertentu tidak terpengaruh oleh metode global, maka saat menggunakan metode $ .AJAX (), global dalam parameter dapat diatur ke False. Kode jQuery adalah sebagai berikut:
$ .Ajax ({url: "test.html", global: false // Jangan memicu acara Ajax global})Di atas adalah kode contoh yang diperkenalkan editor kepada Anda bahwa sesi akan secara otomatis melompat ke halaman login setelah berakhir. Saya harap ini akan membantu semua orang. Jika Anda ingin tahu lebih banyak, harap perhatikan situs web Wulin.com!