背景: 过滤器代码也可实现接口请求次数统计,但会影响过滤器本意;故在dispatcher servlet层进行监听统计
价值: 所有接口的次数统计可适用于系统全天访问量; 单个请求接口的次数统计可在企业中根据接口次数的高低,可分析出接口对应的功能受用户的喜好程度
请求通过过滤器到了servlet,通过mapping中集合调controller;然后controller将请求次数返回,所以不能将请求销毁,listener随着项目启动,但请求进来后才会去统计
步骤
- 查看源码类-->拿源码类的方法复写,使用ServletRequestEvent方法得到客户端请求
- 初始化-得到客户端请求-靠httpServletRequest;
- 得到接口地址和请求方法,请求的参数,得到key和value值
- 将请求的URL作为键,请求次数作为值存储在一个Map中,并且每次请求时将该URL对应的请求次数加1。(如果该URL已经存在在Map中,则更新该URL对应的请求次数加1;如果该URL不存在,则将该URL和请求次数1存储在Map中。)
hashtable时多线程安全的,多线程是排队,有序的进程,多个线程频繁压这个项目,所以安全期间用hashtable
hashmap多线程不安全,多个线程不排队,一开门就全部可以进入