springboot 添加拦截器之后中文乱码_SpringBoot – 过滤器和拦截器 | 字痕随行

本文介绍了SpringBoot中如何使用拦截器和过滤器。首先,展示了如何创建并注册拦截器,包括自定义验证逻辑。接着,通过注解方式声明了一个过滤器,并提到了启用过滤器的关键步骤。最后,提到了使用FilterRegistrationBean进行过滤器排序的技巧。文章还提醒读者,如有错误可进行指正。
摘要由CSDN通过智能技术生成

最近业余时间比较紧张,更得挤时间来记录了,今天介绍一下SpringBoot项目,如何使用过滤器和拦截器。

本文基于SpringBoot 2.2.5 RELEASE。

首先,介绍一下拦截器的使用办法,拦截器相对来说简单一些。

声明一个拦截器,和之前Spring MVC是一样的,继承自HandlerInterceptorAdapter,主要的代码如下:

public class TestInterceptor extends HandlerInterceptorAdapter{

@Override

public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception{

}

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView view) throws Exception{

}

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{

//可以进入处理器之前,自定义一些验证,比如是否登录

return true;

}

}

在声明拦截器之后,需要令其生效。就需要声明一个配置类,继承自WebMvcConfigurer,主要的代码如下:

@Configuration

@EnableWebMvc

public class WebConfig implements WebMvcConfigurer{

@Resource

private TestInterceptor testInterceptor;

@Bean

public TestInterceptor getTestInterceptor(){

return new TestInterceptor();

}

/**

* 拦截器注册

*/

@Override

public void addInterceptors(InterceptorRegistry registry){

registry.addInterceptor(testInterceptor);

}

需要注意的是,注解@EnableWebMvc不能丢失。

如果需要拦截特定的URL,可以使用addPathPatterns()方法。如果需要不拦截URL,可以使用excludePathPatterns()。

然后,介绍一下如何使用注解声明一个过滤器。

注解的方式很简单,就是使用@WebFilter,主要的代码如下:

@WebFilter(filterName = "testContext", urlPatterns = "/")

public class TestFilter implements Filter{

@Override

public void init(FilterConfig filterConfig) throws ServletException{

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException{

HttpServletRequest req = (HttpServletRequest) servletRequest;

HttpServletResponse res = (HttpServletResponse) servletResponse;

//此处可以加入自定义控制

filterChain.doFilter(servletRequest, servletResponse);

}

@Override

public void destroy(){

}

}

需要注意的是:

1. 必须在启动类增加注解:@ServletComponentScan,方可注册生效。

2. 按照Filter的类名排序。

最后,如果想自定义Filter的生效顺序,可以使用FilterRegistrationBean。

主要的代码如下:

@Bean

public FilterRegistrationBean testFilter(ErrorPageFilter filter){

FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>();

filterRegistrationBean.setFilter(new TestFilter());

filterRegistrationBean.setEnabled(true);

filterRegistrationBean.addUrlPatterns("/");

filterRegistrationBean.setOrder(1);

return filterRegistrationBean;

}

如果文中有误,欢迎指正。

觉的不错?可以关注我的公众号↑↑↑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值