自定義Filter攔截器
阿新 • • 發佈:2022-04-08
通過實現Filter介面,覆蓋doFilter方法決定是否攔截
package com.example.test_demo.filter; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; /** * @program: test_demo * * @description: filter **/ public class SysFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { ParamServletRequest paramServletRequest = new ParamServletRequest((HttpServletRequest) servletRequest); filterChain.doFilter(paramServletRequest, servletResponse); } @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void destroy() { Filter.super.destroy(); } }
自定義攔截方法,實現去資料前後空格等功能
package com.example.test_demo.filter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import java.util.Map; /** * @program: test_demo * * @description: * **/ public class ParamServletRequest extends HttpServletRequestWrapper { public ParamServletRequest(HttpServletRequest servletRequest) { super(servletRequest); Map<String, String[]> parameterMap = servletRequest.getParameterMap(); for (Map.Entry<String, String[]> stringEntry : parameterMap.entrySet()) { System.out.println(stringEntry.getKey()+stringEntry.getValue()); } } }
將自定義攔截器通過配置FilterRegistrationBean例項進行註冊
建立一個cofiguration類
package com.example.test_demo.filter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.servlet.DispatcherType; /** * @program: test_demo * * @description: filter註冊器 * **/ @Configuration public class FilterRegister { @Bean public FilterRegistrationBean getFilterRegist(){ FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setDispatcherTypes(DispatcherType.REQUEST); bean.setFilter(new SysFilter());//註冊自定義過濾器 bean.addUrlPatterns("/*");//過濾所有路徑 bean.setName("sysFilter");//過濾器名稱 bean.setOrder(6);//優先順序,數字越小,優先順序越高 return bean; } }