过滤器用法
package org.example.filter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Component
public class LogFilter implements Filter {
private static final Logger log = LoggerFactory.getLogger(LogFilter.class);
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest ;
log.info("------------- LogFilter 开始 -------------");
log.info("请求地址: {} {}",request.getRequestURL().toString(),request.getMethod());
log.info("远程地址: {}",request.getRemoteAddr());
long startTime = System.currentTimeMillis() ;
filterChain.doFilter(servletRequest,servletResponse);
log.info("------------- LogFilter 结束 耗时:{} ms -------------",System.currentTimeMillis()-startTime);
}
@Override
public void destroy() {
}
}
拦截器用法
package org.example.interceptor;
import org.example.bilili.exception.BusinessException;
import org.example.bilili.util.IpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.lang.Nullable;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
/**
* 拦截器
*/
public class PassportInterceptor implements HandlerInterceptor {
private static final Logger log = LoggerFactory.getLogger(PassportInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String ip = IpUtil.getIP(request);
log.info("当前IP:[{}]",ip);
List<String> blackIpList = Arrays.asList("192.168.0.1","192.168.0.2","127.0.0.1");
if(blackIpList.contains(ip)){
log.info("黑名单...");
throw new BusinessException("非法IP");
}
return true ;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
}
}
package org.example.config;
import org.example.interceptor.PassportInterceptor;
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;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Bean
public PassportInterceptor passportInterceptor(){
return new PassportInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(passportInterceptor())
.addPathPatterns("/hello/demo-ip");
}
}