【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】
OK, 到咱们之前为止,基本上所有的功能都做完了,
剩下的问题就是,现在只能是调用了分页查询接口才计算访问次数,咱们也不能去源码中给所有的方法都加上这玩意儿【太low了】,所以拦截器来了
AOP思想,在所有方法运行前执行一下计算访问次数操作
但是现在是Web 工程,那就用拦截器实现
拦截器类
package com.dingjiaxiong.controller.interceptor;import cn.dingjiaxiong.service.IpCountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** ClassName: IpCountInterceptor* date: 2022/10/25 20:37** @author DingJiaxiong*/public class IpCountInterceptor implements HandlerInterceptor {@Autowiredprivate IpCountService ipCountService;//运行拦截之前@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {ipCountService.count();return true;}
}
controller 里面就别加了
配置类
package com.dingjiaxiong.controller.interceptor;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** ClassName: SpringMVCConfig* date: 2022/10/25 20:39** @author DingJiaxiong*/@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(ipCountInterceptor()).addPathPatterns("/**");}@Beanpublic IpCountInterceptor ipCountInterceptor(){return new IpCountInterceptor();}
}
OK,直接运行
OK,现在只要发了请求,不管是什么,都会被计数了
【现在就完成了…吗?】
不,现在的问题是,一旦我把坐标注掉
再次运行
直接就红了
所以还是要修改一下
先恢复坐标【其实问题就是拦截器的位置不对】
直接复制粘贴
SSMP 中的拦截器就不要了
注意还要配置一下加载配置类
OK,再次安装运行
OK, 这样就可以了,现在把坐标注掉
也不影响工程运行
OK,回顾一下