1.使用@WebFilter注解
1.在启动类添加注解
@ServletComponentScan
@WebFilter(filterName = "myFilter",urlPatterns = "/*",initParams = {@WebInitParam(name = "count",value = "400")})
public class MyFilter implements Filter {
private int count;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("filer init");
String param=filterConfig.getInitParameter("count");
count=Integer.valueOf(param);
}
Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
count++;
HttpServletRequest req=(HttpServletRequest)servletRequest;
//获取ServletContext
ServletContext context = req.getSession().getServletContext();
context.setAttribute("count",count);
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
2.自定义config中用配置Bean的方式装配
@Configuration public class FilterConfig {
@Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean filterBean = new FilterRegistrationBean();
MyFilter myFilter = new MyFilter();
filterBean.setFilter(myFilter);
ArrayList urls = new ArrayList();
urls.add("/*");
filterBean.setUrlPatterns(urls);
Map map = new HashMap();
map.put("count","100");
filterBean.setInitParameters(map);
return filterBean;
} }