Springboot增加拦截器,常用来做日志、sql注入检查、token续约等功能

1、编写拦截器

package com.kingteam.session;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * 向spring注入拦截器,实现对session的续租
 * @author 秦晓宇
 * @date: 2020年10月16日 下午3:37:13 
 * @record:
 */
@Configuration
public class SessionRenewalAdapter extends WebMvcConfigurerAdapter{
	
	@Autowired SessionRenewal sessionRenewal;
	
    // 增加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(sessionRenewal);
    }
}

2、实现拦截器具体执行方法

package com.kingteam.session;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;


/**
 * session续租拦截器的实现
 * @author 秦晓宇
 * @date: 2020年10月16日 下午3:36:55 
 * @record:
 */
@Component
public class SessionRenewal extends HandlerInterceptorAdapter{
	
	@Autowired
    protected KtSessionService ktSessionService;
	
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {

		//System.out.println("SessionRenewal:拦截到请求");
		String token = (String) request.getParameter("token");
		//System.out.println("SessionRenewal:token = "+token);
		ktSessionService.refreshToken(token);		
        return true;
    }
    // controller处理完成
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
    }
}

3、拦截器使用@Autowired出现NullException的解决办法

不要使用new的方式创建拦截器的实现方法。

@Configuration
public class SessionRenewalAdapter extends WebMvcConfigurerAdapter{
	
	@Autowired SessionRenewal sessionRenewal;
	
    // 增加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        /*如下是错误的方式*/
        registry.addInterceptor(new SessionRenewal())));
        /*如下是正确的方式*/
        registry.addInterceptor(sessionRenewal);
    }
}

4、添加组件扫描

记得在SpacApplication(springboot的启动文件)中添加@ComponentScan

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值