1: فئة كيان السجل
فئة عامة syslog { / *** / private integer id ؛ / ** وصف السجل*/ وصف السلسلة الخاصة ؛ / ** طريقة التنفيذ*/ طريقة السلسلة الخاصة ؛ /** نوع السجل 0: سجل التشغيل ؛ 1: سجل الاستثناء*/ integer logtype ؛ / ** عنوان IP المطلوب من قبل العميل*/ السلسلة الخاصة طلب ؛ / ** رمز الاستثناء*/ سلسلة الاستثناء الخاصة ؛ / ** تفاصيل الاستثناء*/ سلسلة الاستثناء الخاصة ؛ / ** طلب المعلمات*/ private String Params ؛ / ** عامل*/ سلسلة خاصة createBy ؛ / ** وقت التشغيل*/ سلسلة خاصة تم إنشاؤها ؛ عدد صحيح عام getId () {معرف الإرجاع ؛ } public void setId (integer id) {this.id = id ؛ } السلسلة العامة getDescription () {return description ؛ } public void setDescription (وصف السلسلة) {this.description = description ؛ } السلسلة العامة getMethod () {return method ؛ } public void setMethod (طريقة السلسلة) {this.method = method ؛ } integer getLogtype () {return logtype ؛ } public void setlogtype (integer logtype) {this.logtype = logType ؛ } السلسلة العامة getRequestip () {return requestip ؛ } public void setRequestip (string requestip) {this.requestip = requestiP ؛ } السلسلة العامة getExceptionCode () {return inspectCode ؛ } public void setExceptionCode (string stisplyCode) {this.exceptionCode = inspectiveCode ؛ } السلسلة العامة getExceptionDetail () {return inspectdetail ؛ } public void setExceptionDetail (سلسلة استثناء detail) {this.exceptionDetail = استثناء detail ؛ } السلسلة العامة getParams () {return params ؛ } public void setParams (String params) {this.params = params ؛ } السلسلة العامة getCreateby () {return createBy ؛ } public void setCreateBy (String CreateBy) {this.createBy = createBy ؛ } السلسلة العامة getCreatedAte () {return createdAte ؛ } public void setCreatedAte (سلسلة تم إنشاؤها) {this.createdate = createdAte ؛ }}2: الجرة المطلوبة من قبل مافن
<Rependency> <roupencid> org.aspectj </rougiD> <StifactId> sidejrt </shintifactid> <الإصدار> 1.7.4 </version> </dependency> <rependency> <roupiD> org.4 <ProupId> cglib </rougiD> <StifactId> cglib </stifactid> <sophy> 2.1_3 </version> </sependency> <redence> <roupiD> org.springframework </rougiD> <StifactId> spring-aop </attifactid>
المشروع مطلوب لاستخدام JDK1.7
3: Springservlet-Mvc.xml
<!-Proxy-target-Class = "True" يجبر استخدام وكيل CGLIB. إذا كان خطأ ، فسيتم تحديد SPRING تلقائيًا-> <aOP: SABNEJ-AUTOPPROXY PROXY-TO-ARGET-CLASS = "TRUE"/>
إضافة Proxy-Target-Class = "True" هو اعتراض الأساليب في وحدة التحكم.
4: تحديد القسم ، أكتب بشكل أساسي الإخطارات المسبقة وإشعارات الاستثناء هنا
أدناه هو التعليق التوضيحي المخصص
استيراد java.lang.annotation.*؛ @target ({elementType.Parameter ، elementType.Method}) @repintion (attreencepolicy.runtime) documented public interface log {/ ** نوع العملية المراد تنفيذه ، مثل: إضافة عملية **/ سلسلة عامة (). / ** العملية المحددة التي يتعين تنفيذها ، مثل: إضافة المستخدم **/ السلسلة العامة OperationName () افتراضي "" ؛}الوجه
import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.aspectj.lang.joinpoint ؛ import org.aspectj.lang.proceedingjoinpoint ؛ import org.aspectj.lang.annotation.after ؛ import org.aspectj.lang.annotation.afterreturning ؛ import org.aspectj.lang.annotation.afterthroing ؛ org.aspectj.lang.annotation.aspect ؛ import org.aspectj.lang.annotation.before ؛ import org.aspectj.lang.annotation.pointcut ؛ import org.slf4j.logger ؛ report org.slf4j.loggerfactory ؛ import org.springframework.stereponate.stereponte.sponte.slf4j.loggerfactory ؛ import org.springframework org.springframework.web.context.request.requestContextholder ؛ استيراد org.springframework.web.context.request.servletrequestattributes ؛ استيراد com.gtcity.user.model.syslog ؛ استيراد com.gtcity. com.gtcity.user.service.syslogservice ؛/** * Author Panliang * وقت الإنشاء: 2017-3-31 * doCe-cut class * */ @ @ @componentpublic class systemlogaspect {// just just service to the database @resource syslogservice systemlogister ؛ private Static Final Logger Logger = loggerFactory.getLogger (SystemLogaspect. class) ؛ // تحكم طبقة Tangent Point // يمثل أول * جميع أنواع قيمة الإرجاع // الثانية * تمثل جميع الفئات // الثالثة * تمثل جميع طرق الفئة // الأخيرة ... تمثل جميع المعلمات. @pointcut ("التنفيذ (* com.gtcity.web.controller ..*.*. @Before("controllerAspect()") public void doBefore(JoinPoint joinPoint) {/* System.out.println("============================================================================== system.out.info ("قبل" + point) ؛ Session.GetAttribute (user ") ؛ JoinPoint.getSignature () getName () ؛ method.getParameterTypes () ؛ System.out.println ("=========== Controller pre-notice start ===================) System.out.println ("الوصف الأسلوب:" + اسم) ؛ log.setDescription (OperationName) ؛ log.setException (null) ؛ System.out.println ("======= Controller End =====") ؛ 2017-3-31 2:24:36 pm * param coinpoint point-cut * description: يتم استخدام إشعار استثناء لاعتراض وتسجيل سجل الاستثناء */ apterthrowing (pointcut = "controlleras ()" ، rehrowing = "e") requestContextholder.getRequestattributes (). ip = request.getRemoteDR () ؛ JoinPoint.getSignature () getName () ؛ method.getParameterty () ؛ System.out.println ("=================== DESICTION DESITORY ابدأ ================================================================================== ====================================================================================== ====================================================================================== ====================================================================================== System.out.println ("معلومات الاستثناء:" + E.GetMessage ()) ؛ system.out.println ("requester:" + user.getusername () ؛ log.setDescription (OperationName) ؛ "()) ؛ System.out.println ("=========== استثناء الإخطار نهاية ===========) ؛} catch (استثناء ex) {// سجل الاستثناء المحلي logger.error (" == استثناء استثناء استثناء == ") log ================================================================================================== {} ، joinpoint.getTarget (). getClass (). getName ()5: في وحدة التحكم
/** * ابحث عن كلمة المرور استنادًا إلى اسم المستخدم لتحديد ما إذا كان اسم المستخدم وكلمة المرور صحيحين * Author Panliang * @param request * param respons Skippage (طلب httpservletrequest ، httpservletresponse) يلقي ioException {modelandview نتيجة = null ؛ string username = request.getParameter ("البريد الإلكتروني") ؛ سلسلة كلمة المرور = request.getParameter ("كلمة المرور") ؛ modelandview ("Redirect: /login/dispacher_main.do") ؛} آخر if (flag == 2) {// اسم المستخدم غير موجود = new modelandview ("Redirect: /login/login.do؟ errorcode = 1") ModelAndView ("Redirect: /login/login.do؟ errorcode = 2") ؛} نتيجة الإرجاع ؛}بالنسبة لأولئك الذين يرغبون في معرفة الإخطارات الثلاثة الأخرى ، يرجى الرجوع إلى منشور المدونة هذا: انقر لفتح الرابط
وبهذه الطريقة ، عندما يصل المستخدم إلى الخلفية ، ستكون هناك سجلات ما إذا كانت قاعدة بيانات الوصول العادية أو الأخطاء.
طريقة التعليقات التوضيحية AOP أعلاه لتنفيذ إدارة السجل العالمية هي كل المحتوى الذي شاركته معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.