虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > JSP编程 > JSP 自定义注解及记录操作日志

JSP 自定义注解及记录操作日志
类别:JSP编程   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了JSP 自定义注解及记录操作日志的相关资料,需要的朋友可以参考下

JSP 自定义注解及记录操作日志

Spring的配置文件

    <aop:aspectj-autoproxy />

日志拦截器

    package com.vem.interceptor;
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Pointcut;
    import org.aspectj.lang.reflect.MethodSignature;
    import org.springframework.stereotype.Component;
    import com.vem.entity.BussAnnotation;
    @Aspect @Component public class LogInterceptor {
    @Pointcut("execution(* com.vem.service..*.*(..))") public void aApplogic() {
    }
    /** * 环绕通知 用于拦截指定内容,记录用户的操作 */ @Around(value = "aApplogic() && @annotation(annotation) &&args(object,..) ", argNames = "annotation,object") public void interceptorApplogic(ProceedingJoinPoint joinPoint, BussAnnotation annotation, Object object) throws Throwable {
    System.out.println("模块名称moduleName:" + annotation.moduleName());
    System.out.println("操作名称option:" + annotation.option());
    String methodName = joinPoint.getSignature().getName();
    System.out.println("方法名methodName:" + methodName);
    MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
    String[] strings = methodSignature.getParameterNames();
    joinPoint.proceed();
    Object[] arguments = joinPoint.getArgs();
    //获得参数列表 if(arguments.length<=0){
    System.out.println(methodName+"方法没有参数");
    }
    else{
    for(int i=0;
    i<arguments.length;
    i++){
    System.out.println(strings[i]+" : "+arguments[i]+" : ");
    }
    }
    }
    }

自定义注解

    @Retention(RetentionPolicy.RUNTIME) @Target({
    ElementType.METHOD}
    ) @Documented public @interface BussAnnotation {
    //模块名 String moduleName() default "";
    //操作内容 String option() default "";
    }

接口实现

写在service

    @BussAnnotation(moduleName="人员管理",option="添加用户") public void testDemo1(PageData pd) throws Exception{
    }

junit测试类

    package com.vem.entity;
    import javax.annotation.Resource;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import com.vem.service.data.DemoService;
    import com.vem.util.PageData;
    @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( {
    "classpath:spring/ApplicationContext.xml" }
    )public class AopTest {
    @Resource(name = "demoService") public DemoService demoService;
    @Test public void testAopAddUser1(){
    PageData pd = new PageData();
    pd.put("name", "zhangzexing");
    pd.put("age", "21");
    pd.put("passward", "123456");
    try {
    demoService.testDemo2(pd);
    }
    catch (Exception e) {
    // TODO Auto-generated catch block e.printStackTrace();
    }
    }
    }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关热词搜索: JSP 自定义注解及记录操作日志 自定义注解