Rumah >Java >javaTutorial >Bagaimana untuk melaksanakan fungsi pemintas dalam Springboot
preHandle: Pra-pemprosesan, pemprosesan sebelum kaedah pengawal sasaran dilaksanakan
postHandle: Dalam pengawal sasaran kaedah Selepas kaedah pengawal dilaksanakan, ia diproses sebelum sampai ke halaman yang ditentukan
selepasPenyelesaian: Ia diproses selepas halaman dipaparkan
Kaedah:
1. Springboot melaksanakan pemintas dengan melaksanakan antara muka HandlerInterceptor
2 melalui anotasi @Configuration
3 .Nyatakan peraturan pemintasan
Mengambil log masuk pengguna sebagai contoh, jika pengguna tidak log masuk dan tiada data pengguna dalam sesi, ia akan dialihkan ke halaman log masuk halaman utama
Selepas log masuk dengan betul, Simpan daftar semula ke sesi Apabila anda melawat halaman itu sekali lagi, pemintas log masuk boleh mencari objek relister dan tidak perlu memintas antara muka login sekali lagi. menyuntik konfigurasi melalui anotasi @Configuration Dan tentukan laluan pemintas dan laluan yang perlu dilepaskan.
Nota: Pemintas /** akan memintas semua sumber, termasuk sumber statik, keperluan sumber statik. untuk dilepaskan
package com.zwz.springbootweb.interceptor; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.websocket.Session; public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); Object reglister = session.getAttribute("Reglister"); if (reglister != null) { return true; } else { request.setAttribute("msg", "请先登录!"); request.getRequestDispatcher("/").forward(request,response); return false; } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } }
Senario Aplikasi Pencegat
1. Pengelogan: Rekodkan log maklumat permintaan untuk pemantauan maklumat , statistik maklumat, pengiraan PV (PANDANGAN Halaman), dsb.2. Semakan kebenaran: seperti pengesanan log masuk, masukkan pemproses untuk mengesan sama ada anda log masuk, jika tidak terus kembali ke halaman log masuk
3 berkelakuan tidak dapat diterangkan dalam tempoh masa tertentu Jika ia perlahan, anda boleh menggunakan pemintas untuk merekodkan masa mula sebelum memasuki pemproses, dan merekodkan masa tamat selepas pemprosesan, untuk mendapatkan masa pemprosesan permintaan (jika terdapat proksi terbalik, seperti apache, ia boleh direkodkan secara automatik); 4 Tingkah laku umum: baca kuki untuk mendapatkan maklumat pengguna dan masukkan objek pengguna ke dalam permintaan, untuk memudahkan penggunaan seterusnya. proses, serta mengekstrak maklumat Tempatan dan Tema, dsb., selagi ia diperlukan oleh berbilang pemproses, ia boleh dilaksanakan menggunakan pemintas .
5. OpenSessionInView: Seperti Hibernate, buka SESSION selepas memasuki pemproses dan tutup SESSION selepas selesai.
Perbezaan antara pemintas dan penapis1. Pemintas adalah berdasarkan mekanisme pantulan Java, manakala penapis adalah berdasarkan panggilan balik fungsi.
2. Pemintas tidak bergantung pada bekas servlet, tetapi penapis bergantung pada bekas servlet.
3 Pemintas hanya boleh berfungsi pada permintaan ACTION, manakala penapis boleh berfungsi pada hampir semua permintaan. 4 Pemintas boleh mengakses objek dalam konteks ACTION dan timbunan nilai, tetapi penapis tidak boleh.
5 Dalam kitaran hayat ACTION, pemintas boleh dipanggil beberapa kali, manakala penapis hanya boleh dipanggil sekali apabila bekas dimulakan.
6. Pemintas boleh mendapatkan setiap biji dalam bekas IOC, tetapi penapis tidak boleh Ini adalah sangat penting.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi pemintas dalam Springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!