SpringBoot中使用Filter
阿新 • • 發佈:2019-02-04
首先編寫自己的Filter:
@WebFilter(filterName="MyFilter",urlPatterns="/*")
public class MyFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest hrequest = (HttpServletRequest) request;
HttpServletResponse hresponse = (HttpServletResponse) response;
String requestUri = hrequest.getRequestURI();
//此處Constants.unFilterUrl為筆者自己定義的不進行攔截的路徑,比如(*.img)|(*.png)等靜態資源則不進行攔截
if (requestUri.matches(Constants.unfilterUrl)){
chain.doFilter(hrequest, hresponse);
return ;
}
.....
可自由在該方法中新增自己的程式碼
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
接下來則是在Springboot啟動類中進行配置:
方法一:
在類的上方添加註解@ServletComponentScan(value = {“(此處為Filter類路徑)”})
注意:該註解在springboot 1.3版本後才引入,筆者曾使用springboot 1.2.5版本使用此註解失敗,耗費很久時間才從文件的犄角旮旯裡發現此資訊,得來不易啊。
方法二:
在啟動類中配置@bean
@Bean
public FilterRegistrationBean securityFilter() {
ServletFilter filter = new MyFilter();
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(filter);
registration.addUrlPatterns("/*");
registration.setName("MyFilter");
return registration;
}
至此完成自己的Filter配置。。。慢慢享受吧。。