用Spring的切面去做,慕课网上的大神的小妙招,被我拷贝下来了。
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /**
* 作用实现拦截http请求.
*/
@Aspect
@Component //把这个文件引入到Spring容器里面去.
public class HttpAspect {
@Pointcut("execution(public * com.account.demo.controller.*.*(..))")
public void log(){ }
/**
* 拦截那些方法.请求前.
* JoinPoint 获取类方法和类名对象.
*/
@Before("log()")
public void logBefore(JoinPoint joinPoint){
System.out.println("拦截了getInfo方法");
//url,method,ip,类方法,参数.
//SpringBoot通过RequestContextHolder获取HttpRequest和HttpResponse
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//javax.servlet.http.HttpServletRequest
HttpServletRequest request = attributes.getRequest();
System.out.println("url"+request.getRequestURL());
System.out.println("method"+request.getMethod());
System.out.println("ip"+request.getRemoteAddr());
//类方法.
System.out.println("类方法"+joinPoint.getSignature().getDeclaringTypeName()
+"."+ joinPoint.getSignature().getName()
);
//参数:
System.out.println("类方法"+joinPoint.getArgs());
}
/**
* 拦截那些方法.请求后.
*/
@After("log()")
public void logAfter(){
System.out.println("拦截了getInfo方法.之后");
} /**
* 返回参数.
* @param object 入参
*/
@AfterReturning(returning = "object",pointcut = "log()")
public void doAfterReturning(Object object){
System.out.println(object);
}
}

最新文章

  1. C# basic
  2. DFX 安全测试-- 告诉你什么是XSS、sql注入?POST和GET的区别....
  3. 53. Android常用工具类
  4. js 设置Cookie 在PHP中读取(大师手法)
  5. Redis笔记(二)Redis的部署和启动
  6. C语言有字符串这种数据类型吗?
  7. 编译gcc4.7.3 其他版本的应该也可以
  8. 修改MDI工程主框架窗口标题(修改CREATESTRUCT结构体)
  9. Android Handler传递参数动态更新UI界面demo
  10. XP系统VPN设置
  11. css 动画 transform transition animation
  12. jquery ajax 在ie7不能正常使用
  13. [译]Java 设计模式之外观
  14. jsp上的九个隐含对象
  15. 2015 多校联赛 ——HDU5299(树删边)
  16. 利用BGP虚拟下一跳实现链路负载均衡
  17. 部署Redis4.x单机版及配置RDB和AOF持久化
  18. 2018haoi总结
  19. 须知的css——margin不重叠的情形
  20. Android "Please ensure that adb is correctly located at" 错误

热门文章

  1. 如何实现一台服务器同时运行两个php版本
  2. C# sync/async 同步/异步
  3. Vscode LeetCode 教程
  4. 【mail邮件系统】linux上安装部署sendmail邮件系统
  5. WPF使用FlowDocument实现图文混排
  6. 使用create-react-app+react-router-dom+axios+antd+react-redux构建react项目
  7. OSG嵌入QT的简明总结
  8. [转]自定义UiPath Activity实践
  9. Mac环境下执行npm install报权限错误解决办法
  10. Oracle 11gR2中HR用户安装说明