Abstrak: Berkali -kali kami akan memodifikasi bug dari kolega lain, atau bahkan serangga kolega yang sudah pergi. Terkadang kami mengklik halaman dan tidak dapat pergi ke pengontrol mana yang sesuai dengan latar belakang. Menanggapi masalah ini, kami benar -benar dapat menggunakan Interceptor SPRNGMVC untuk memblokir permintaan pengguna untuk mengetahui kelas mana yang diminta halaman. Tentu saja, informasi log yang dicetak ini mungkin tidak cocok untuk penempatan di lingkungan produksi, atau pencegat ini juga tidak perlu. . . .
1. Penggunaan HandlerInterceptor
Langkah 1: Daftarkan pencegat
<!-Daftarkan Interceptors-> <MVC: Interceptors> <bean /> </mvc: Interceptors>
Langkah 2: Warisan HandlerInterceptor dan implementasikan pencegat
package com.iflashbuy.limanman;import java.util.Iterator;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.handlerInterceptor; impor org.springframework.web.servlet.modelandview; kelas publik mengimplementasikan handlerInterceptor {private Logger Logger = LoggerFactory. AfterCompletion (permintaan httpservletrequest, respons httpservletResponse, objek arg2, pengecualian arg3) melempar pengecualian {} @overridepublic void posthandle (httpservletreew arg0, httpservletResponse arg1, objek arg2, ModelServletReewest arg0, httpservletResponSe arg1, objek arg2, model dan ModelSlview arg3) Stub} @Overridepublic boolean prehandle (httpservletrequest permintaan, httpservletResponse arg1, objek arg2) melempar pengecualian {int i = 1; coba {@suppresswarnings ("uncecked") peta <string, objek> parmmap = request.getpresserMap ();; parmmap.keyset (). iterator (); while (iter.hasnext ()) {tombol objek = iter.next (); nilai objek = parmmap.get (key); logger.info ("th" + i + "param ----> {}-{}", kunci, nilai); i + "param ----> {}-{}", kunci, nilai); i + "; BENAR;}}2. Pengaruh informasi pencetakan latar belakang
3. Perluas penggunaan pencegat untuk mencapai otentikasi HTTP dasar
/** * Dipanggil setelah mengeksekusi pengontrol, yaitu, ketika meninggalkan */@overridepublic void aftercompletion (httpservletRequest request, httpservletResponse response, objek arg2, pengecualian arg3) melempar pengecualian {logger.info ("classname --->" + arg2); Logger.inepoid ("classname --->" + arg2); logger.inepoub {"classname --->" + arg2); logger.inpoub ("classname --->" + arg2); logger.inpoub {logger. postHandle(HttpServletRequest request,HttpServletResponse response, Object arg2, ModelAndView arg3)throws Exception {}@Overridepublic Boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object arg2) throws Exception {String sessionAuth = (String) request.getSession (). getAttribute ("auth"); if (sessionAuth! = null) {System.out.println ("Ini adalah langkah berikutnya"); nextSpep (request, response);} else {if (! OffeadAheaduth (request, response)) {response.setstatus (401); responseHeader ("cache-cache (" cache-cache ("cache-cacheas (" response) {if response (401); response ("response (" response); "no-store");response.setDateHeader("Expires", 0);response.setHeader("WWW-authenticate", "Basic Realm=/"Please enter the administrator account password/"");return false;}}return true;}private Boolean checkHeaderAuth(HttpServletRequest request,HttpServletResponse response) throws IOException {String auth = request.getHeader ("otorisasi"); System.out.println ("auth yang dikodekan dalam base64 adalah" + getFrombase64 (auth)); if (auth! = null) && (auth.length ()> 6)) {auth = auth.substring (6, auth.length (); string decorDaUth = auth.substring (6, auth.length ()); string deceCrodedAuth = auth =substring (6, auth.length ()); string deceCrodedAuth = authromb (get (6, auth. dari base64 adalah " + decodedauth); request.getSession (). setattribute (" auth ", decodedauth); return true;} else {return false;}} string pribadi getFrombase64 (string s) {if (s == null) return null; coba {byte [] encodeBase64 = Base64.encodeBase64 (s.getbytes ("UTF-8")); return new string (encodeBase64);} catch (UnsupportedencodingException e) {return null;}} public void nextstep (httpservletRequest, httpservlete response (httpservletequest, httpservlete response (httpservletequest, httpservleteResponsepresponse) pengontrol ");}Meringkaskan
Di atas adalah seluruh konten artikel ini tentang contoh kode dari kode penggunaan SpringMVC Interceptor HandlerInterceptor, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Analisis Kode Antarmuka Antarmuka Interceptor Spring Interceptor Handler Interceptor
Login Code Interceptor Berbagi Diimplementasikan oleh Spring MVC
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!