SpringMVC-拦截器

过滤器实现Filter接口,是处理Servlet请求的;而拦截器实现HanderInception接口,处理Spring-mvc请求的。

一、拦截器的基本使用

方式一:

方式二:

在经过步骤一直接可以到4

注意:ProjectInterceptor类 最好在Controler包中。属于表现层。

二、拦截器参数

多个拦截器运行顺序

三、源码

1.定义ProjectInterceptor拦截器

java 复制代码
@Component
//定义拦截器类,实现HandlerInterceptor接口
//注意当前类必须受Spring容器控制
public class ProjectInterceptor implements HandlerInterceptor {
    @Override
    //原始方法调用前执行的内容
    //返回值类型可以拦截控制的执行,true放行,false终止
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        String contentType = request.getHeader("Content-Type");
//        HandlerMethod hm = (HandlerMethod)handler;
//        System.out.println("preHandle..."+contentType);
        return true;
    }
    @Override
    //原始方法调用后执行的内容
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle...");
    }
    @Override
    //原始方法调用完成后执行的内容
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion...");
    }
}

注意要在controller包中定义拦截器类。

2.加载拦截器类

java 复制代码
@Configuration
@ComponentScan({"com.itheima.controller"})
@EnableWebMvc
//实现WebMvcConfigurer接口可以简化开发,但具有一定的侵入性
public class SpringMvcConfig  implements WebMvcConfigurer{
    @Autowired
    private ProjectInterceptor projectInterceptor;
    @Autowired
    private ProjectInterceptor2 projectInterceptor2;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //配置多拦截器
        registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");
        registry.addInterceptor(projectInterceptor2).addPathPatterns("/books","/books/*");
    }
}
相关推荐
Darkdreams13 分钟前
SpringBoot项目集成ONLYOFFICE
java·spring boot·后端
bropro32 分钟前
【Spring Boot】Spring AOP中的环绕通知
spring boot·后端·spring
lhbian32 分钟前
【Spring Cloud Alibaba】基于Spring Boot 3.x 搭建教程
java·spring boot·后端
luom010241 分钟前
springcloud springboot nacos版本对应
spring boot·spring·spring cloud
代码雕刻家1 小时前
3.6.Maven-依赖管理-依赖范围
java·maven
范什么特西2 小时前
狂神报错页面设置
java·tomcat
架构师沉默2 小时前
AI 真的会取代程序员吗?
java·后端·架构
Memory_荒年2 小时前
ReentrantLock 线程安全揭秘:从“锁”到“重入”的魔法
java·后端·源码
L0CK2 小时前
秒杀异步下单业务逻辑梳理
java
zuoerjinshu3 小时前
【spring专题】编译spring5.3源码
java·后端·spring