1.整合过滤器Filter
配置过滤器1
package com.example.springbootdemo.filter;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.*;
import java.io.IOException;
/**
* @Author soul yzg
* @Date 2021/2/24 11:17
* 努力学习 天天进步
*/
@Slf4j
public class MyFilter1 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("{}过滤器开始初始化",filterConfig.getFilterName());
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info("执行FIRST过滤器之前");
filterChain.doFilter(servletRequest, servletResponse);
log.info("执行FIRST过滤器之后");
}
@Override
public void destroy() {
}
}
配置过滤器2
package com.example.springbootdemo.filter;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.*;
import java.io.IOException;
/**
* @Author soul yzg
* @Date 2021/2/24 16:45
* 努力学习 天天进步
*/
@Slf4j
public class MyFilter2 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("{}过滤器开始初始化", filterConfig.getFilterName());
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info("执行TWO过滤器之前");
filterChain.doFilter(servletRequest, servletResponse);
log.info("执行TWO过滤器之后");
}
@Override
public void destroy() {
}
}
过滤器配置类
package com.example.springbootdemo.config;
import com.example.springbootdemo.filter.MyFilter1;
import com.example.springbootdemo.filter.MyFilter2;
import com.example.springbootdemo.interceptor.OneInterceptor;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
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;
/**
* @Author soul yzg
* @Date 2021/2/24 15:32
* 努力学习 天天进步
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 配置第一个过滤器
*
* @return
*/
@Bean
public FilterRegistrationBean<MyFilter1> registrationBeanFirst() {
FilterRegistrationBean<MyFilter1> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new MyFilter1());
registrationBean.setName("FIRST");
registrationBean.setOrder(1);
registrationBean.addUrlPatterns("/boot/service/*");
return registrationBean;
}
/**
* 配置第二个过滤器
*
* @return
*/
@Bean
public FilterRegistrationBean<MyFilter2> registrationBeanTwo() {
FilterRegistrationBean<MyFilter2> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new MyFilter2());
registrationBean.setName("TWO");
registrationBean.setOrder(2);
registrationBean.addUrlPatterns("/boot/service/*");
return registrationBean;
}
}
测试过滤器执行顺序:
配置拦截器
package com.example.springbootdemo.interceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Author soul yzg
* @Date 2021/2/24 15:14
* 努力学习 天天进步
*/
@Slf4j
public class OneInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("开始进入拦截器了");
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("admin".equals(username) && "admin".equals(password)) {
return true;
}
log.info("校验失败");
return false;
}
}
package com.example.springbootdemo.config;
import com.example.springbootdemo.filter.MyFilter1;
import com.example.springbootdemo.filter.MyFilter2;
import com.example.springbootdemo.interceptor.OneInterceptor;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
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;
/**
* @Author soul yzg
* @Date 2021/2/24 15:32
* 努力学习 天天进步
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 配置拦截器
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new OneInterceptor())
.addPathPatterns("/boot/admin/**");
}
}
测试结果:拦截器生效。