视频地址
如何获取Http请求信息打印在控制台
package com.imooc.aspect;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
//需增加注解@Aspect
// @Component引入spring容器用
@Aspect
@Component
public class HttpAspect {
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
//定义一个共用的方法
//使用Pointcut注解
@Pointcut("execution(public * com.imooc.controller.GirlController.*(..))")
public void log(){
}
//执行com.imooc.girl.controller.GirlController.*(..)下面的所有方法前 输出1111 *的地方可以换成具体的方法名这样只拦截这个方法
@Before("log()")
//@Before("execution(public * com.imooc.girl.controller.GirlController.girlList(..))") 可以是这样的 ..表示任何参数 都会被拦截 com.imooc.girl.controller.GirlController.*(..) 表示任何方法都会被拦截 befor注解会在执行方法前进行拦截
public void doBefore(JoinPoint joinPoint){
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//url
logger.info("url = {}",request.getRequestURI());
//method
logger.info("method = {}",request.getMethod());
//ip
logger.info("ip = {}",request.getRemoteAddr());
//类方法
logger.info("class_method = {}",joinPoint.getSignature().getDeclaringTypeName()+"." + joinPoint.getSignature().getName());
//参数
logger.info("ip = {}",joinPoint.getArgs());
}
@After("log()")
public void doAfter(){
logger.info("22222");
}
//如何获取返回的内容
//Object object为返回值内容
//如果希望打印出具体内容的话 需要在返回值的类里加一个toString的方法 然后 然后把 logger.info("response = {}",object);改成 logger.info("response = {}",object.toString);
@AfterReturning(returning = "object",pointcut = "log()")
public void doAfterReturning(Object object){
logger.info("response = {}",object);
}
}