springboot添加拦截器

1,在annotation里面创建java类,这里创建的文件名为InterceptorUtil

bash 复制代码
package org.appcenter.wx.annotation;


import org.appcenter.db.service.VisitWebsiteService;
import org.appcenter.wx.service.UserTokenManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InterceptorUtil implements HandlerInterceptor {
    @Autowired
    VisitWebsiteService visitWebsiteService;


    /**
     * 添加访客记录,同一个用户一天算一条记录,所有未登录的用户算一条
     */
     //在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String appcenterToken = request.getHeader("Token");
        Integer userId;
        if (appcenterToken == null || appcenterToken.isEmpty()) {
            userId = 0;
        } else {
            userId = UserTokenManager.getUserId(appcenterToken);
            if (userId == null) {
                userId = 0;
            }

        }
        visitWebsiteService.addVisitors(userId);

        return true;
    }
    
    //在业务处理器处理请求执行完成后,生成视图之前执行
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {


    }

   //DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面);
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {


    }
}

2,在config里创建类MyWebAppConfigurer 并实现WebMvcConfigurer

bash 复制代码
package org.appcenter.wx.config;

import org.appcenter.wx.annotation.InterceptorUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.*;

//@EnableWebMvc
@Configuration
public class MyWebAppConfigurer implements WebMvcConfigurer {

    @Bean
    public HandlerInterceptor getMyInterceptor() {
        return new InterceptorUtil();
    }

    //需要拦截的路径,/**表示需要拦截所有请求
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        //注册一个拦截器
        registry.addInterceptor(getMyInterceptor())
                .addPathPatterns("/app/ad/**")
                .addPathPatterns("/app/homePage/**")
                .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html", "/swagger-ui.html/**");
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}
相关推荐
不积硅步1 分钟前
jenkins安装jdk、maven、git
java·jenkins·maven
Cult Of2 分钟前
一个最小可扩展聊天室系统的设计与实现(Java + Swing + TCP)
java·开发语言·tcp/ip
GIS开发者3 分钟前
对nacos进行信创改造,将其中的tomcat替换为保兰德的中间件
java·中间件·nacos·tomcat·保兰德
晚风_END6 分钟前
postgresql数据库|连接池中间件pgbouncer的部署和配置详解
数据库·后端·spring·postgresql·中间件·个人开发
weixin_440784119 分钟前
OkHttp使用指南
android·java·okhttp
独自破碎E10 分钟前
LCR003-比特位计数
java·开发语言
梵得儿SHI13 分钟前
(第九篇)Spring AI 核心技术攻坚:安全防护 企业级 AI 应用的风控体系之全链路防护(API 安全到内容合规)
java·人工智能·安全·spring·安全防护·springai·企业级ai
pcm12356714 分钟前
设计C/S架构的IM通信软件(2)
java·c语言·架构
砚边数影15 分钟前
逻辑回归实战(一):用户流失预测数据集设计,KingbaseES存储标签数据
java·人工智能·算法·机器学习·逻辑回归·线性回归·金仓数据库
岁岁种桃花儿20 分钟前
构建SpringBoot项目Docker镜像并发布到k8s集群中进行运行
spring boot·docker·kubernetes