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

所属分类: 网络编程 / JSP编程 阅读数: 1325
收藏 0 赞 0 分享

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();
 }
  } 

} 
 

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

更多精彩内容其他人还在看

table中点击表头实现排序的功能示例介绍

获取上次点击的表头的名称和这次点击的表头的名称做比较,如果两者相同就按原先相反的顺序排列,否则新列升序排列
收藏 0 赞 0 分享

jsp防止跨域提交数据的具体实现

这篇文章主要介绍了jsp防止跨域提交数据的具体实现,需要的朋友可以参考下
收藏 0 赞 0 分享

解决jsp页面使用网络路径访问图片的乱码问题

这篇文章主要介绍了jsp页面使用网络路径访问图片的乱码问题的解决方法 ,需要的朋友可以参考下
收藏 0 赞 0 分享

在jsp页面如何获得url参数

这篇文章主要介绍了在jsp页面获得url参数的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

几种防止表单重复提交的方法

表单重复提交是在多用户Web应用中最常见的一个问题,很多场合都会遇到这种情况,下面与大家分享下防止表单重复提交的几种策略
收藏 0 赞 0 分享

struts2集成javamail发邮件示例详解

这篇文章主要介绍了struts2集成javamail发邮件示例,需要的朋友可以参考下
收藏 0 赞 0 分享

不让tomcat显示目录文件列表的配置方法

这篇文章主要介绍了不让tomcat显示目录文件列表的配置方法,这里需要修改conf/web.xml文件,需要的朋友可以参考下
收藏 0 赞 0 分享

jsp使用cookie存储中文示例分享

这篇文章主要介绍了jsp使用cookie存储中文示例,需要的朋友可以参考下
收藏 0 赞 0 分享

jsp中include指令静态导入和动态导入的区别详解

这篇文章主要介绍了jsp中include指令静态导入和动态导入的区别,通过示例和图文讲解可以更好的看出他们的区别,需要的朋友可以参考下
收藏 0 赞 0 分享

jsp中文显示问号问题解决方法

jsp中想要输出的中文被显示成问号?在eclipse-windows- preferences中搜索jsp,Encoding选项中选择 Chinese,此问题便可解决
收藏 0 赞 0 分享
查看更多