• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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;iarguments.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();
     }
      } 
    
    } 
     
    
    

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

    您可能感兴趣的文章:
    • 详解springmvc 中controller与jsp传值
    • springMVC如何将controller中数据传递到jsp页面
    • JSP spring boot / cloud 使用filter防止XSS
    • JSP 获取spring容器中bean的两种方法总结
    • 利用JSP session对象保持住登录状态
    • JSP 开发之 releaseSession的实例详解
    上一篇:jsp输出所有请求头的名称方法
    下一篇:JSP Struts过滤xss攻击的解决办法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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