إذا لم يتم تسجيل الدخول ، فلا يُسمح لك بالوصول إلى الصفحات في مجلد الخلفية. كيف تحدد ما إذا كان سيتم تسجيل الدخول؟ الخلفية هي دليل رئيسي. يحتاج كل من يدير هذا الدليل إلى كتابته في جدول السجل. كيف تنفذها؟ Interceptor هو أحد حلول التنفيذ.
(1) أضف مستقبلات system في حزمة com.geloin.spring.Interceptor وجعلها ترث المعالج
/ ** * * Author Geoin */ package com.geloin.spring.Interceptor ؛ استيراد java.io.printwriter ؛ استيراد java.util.iterator ؛ استيراد java.util.map ؛ استيراد javax.annotation.Resource ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد org.springframework.stereotePe.Repository ؛ استيراد org.springframework.web.servlet.handler.HandlerInterceptorAdapter ؛ استيراد com.embest.ruisystem.form.systemloggerform ؛ استيراد com.embest.ruisystem.form.systemuserform ؛ استيراد com.embest.ruisystem.service.systemloggerservice ؛ استيراد com.embest.ruisystem.util.constants ؛ استيراد com.embest.ruisystem.util.datautil ؛ / ** * * * Author Geoin */ Repository public class SystemInterceptor يمتد مع معالج {Resource (name = "SystemLogGerservice") systemloggerservice systemloggerservice ؛ / * * (غير javadoc) * * see * org.springframework.web.servlet.handler.handlerinterceptoradapter#prehandle * (javax.servlet.http.httpletrequest ، * javax.servlet.http.http.httpserversponse ، java.lang.lang.lang suppressWarnings ({"RawTypes" ، "uncheced"}) Override Public Boolean Prehandle (httpservletrequest request ، httpservletresponse ، معالج الكائن) يلقي استثناء {request.setcharacterencoding ("UTF-8") ؛ استجابة. setcharacterencoding ("UTF-8") ؛ استجابة. // سلسلة التحكم في جلسة الخلفية [] nofilters = new string [] {"login.html" ، "vericode.html" ، "index.html" ، "logout.html"} ؛ String uri = request.getRequesturi () ؛ if (uri.indexof ("الخلفية")! = -1) {boolean befilter = true ؛ لـ (سلسلة S: nofilters) {if (uri.indexof (s)! = -1) {befilter = false ؛ استراحة؛ }} if (befilter) {object obj = request.getSession (). getAttribute (constants.logined) ؛ if (null == obj) {// لم يتم تسجيلها في printWriter Out = response.getWriter () ؛ StringBuilder Builder = new StringBuilder () ؛ builder.append ("<script type =/" text/javaScript/"charset =/" utf-8/">") ؛ builder.append ("تنبيه (/" الصفحة انتهاء ، يرجى تسجيل الدخول مرة أخرى/") ؛") ؛ builder.append ("window.top.location.href =/" ") ؛ builder.append (constants.basepath) ؛ builder.append ("/background/index.html/"؛ </script>") ؛ Out.print (builder.toString ()) ؛ out.close () ؛ العودة كاذبة } آخر {// إضافة سلسلة السجل OperateContent = constants.operateContent (uri) ؛ if (null! = operateContent) {String url = uri.substring (uri.indexof ("background")) ؛ سلسلة IP = request.getRemoteadDr () ؛ Integer userId = ((SystemUserform) obj) .getId () ؛ نموذج SystemLoggerform = new SystemLoggerForm () ؛ form.setUserId (userId) ؛ form.setip (IP) ؛ form.setOperateContent (operateContent) ؛ form.seturl (url) ؛ this.systemloggerservice.edit (form) ؛ }}}} map paramsmap = request.getParamEterMap () ؛ لـ (iterator <map.entry> it = paramsmap.entryset (). iterator () ؛ it .hasNext () ؛) {map.entry entry = it.next () ؛ كائن [] القيم = (object []) entry.getValue () ؛ لـ (Object OBJ: القيم) {if (! dataUtil.isvaluesucced (obj)) {رمي new runTimeException ("هناك شخصيات غير قانونية:" + obj) ؛ }}} return super.prehandle (طلب ، استجابة ، معالج) ؛ }}(2) تعديل context-dispatcher.xml للسماح لـ Spring بإدارة عمليات التقاطع
<MVC: Interceptors> <bean /> </mvc: اعتراضات>
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.