zoukankan      html  css  js  c++  java
  • spring -- 登录拦截器

    Spring除了支持Schema方式配置AOP,还支持注解方式:使用@Aspect来配置

    @Component
    @Aspect
    public class LogInterceptor {
    private Logger logger = LoggerFactory.getLogger(LogInterceptor.class);


    @Pointcut("execution(* com.cyb.*.controller.*.*(..))")
    public void pointCut() {
    // logger.info("ponit....");

    }

    @Before("pointCut()")
    public void before() {
    // logger.info("被拦截方法调用之前调用此方法,输出此语句");
    }

    @After("pointCut()")
    public void after() {
    // logger.info("被拦截方法调用之后调用此方法,输出此语句");
    }

    @SuppressWarnings("rawtypes")
    @Around("pointCut()")
    public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
    String className = pjp.getTarget().getClass().getSimpleName();
    String methodName = pjp.getSignature().getName() + "()";
    Object[] paramValues = pjp.getArgs();
    ObjectMapper objectMapper = new ObjectMapper();

    List<Object> paramafter=new ArrayList<Object>();
    for(Object param:paramValues){
    if(!(param instanceof HttpServletRequest)
    &&!(param instanceof HttpServletResponse)&&!(param instanceof HttpSession)){
    paramafter.add(param);
    }
    }

    String paramValuesStr=objectMapper.writeValueAsString(paramafter);

    MethodSignature joinPointObject = (MethodSignature) pjp.getSignature();

    String [] paramnames=joinPointObject.getParameterNames();
    List<String> names=new ArrayList<String>();
    for(String paramname:paramnames){
    if(!"request".equals(paramname)&&!"response".equals(paramname)&&!"session".equals(paramname)){
    names.add(paramname);
    }
    }

    logger.info("类名: {}, 方法名: {}, 参数名: {},参数值: {}", new Object[] { className, methodName,
    names, paramValuesStr });
    Object obj = pjp.proceed();
    Object logObj = obj;
    if (obj != null) {
    if (obj instanceof List && ((List) obj).size() > 10) {
    logObj = ((List) obj).size();
    }
    }


    String resultJson = objectMapper.writeValueAsString(logObj);
    logger.info("类名: {}, 方法名: {}, 返回值: {}",
    new Object[] { className, methodName, resultJson });
    return obj;
    }

    }

  • 相关阅读:
    BNUOJ-26474 Bread Sorting 逆序对
    POJ-2480 Longge's problem 积性函数
    Bzoj-2705 Longge的问题 欧拉函数
    Bzoj-2820 YY的GCD Mobius反演,分块
    HDU-4689 Derangement DP
    [转]初学者程序语言的选择
    HDU-4705 Y 树形DP
    HDU-4704 Sum 大数幂取模
    HDU-4699 Editor 数据结构维护
    HDU-4696 Answers 纯YY
  • 原文地址:https://www.cnblogs.com/caer/p/5795369.html
Copyright © 2011-2022 走看看