Filter是Servlet技术中最实用的技术,Web开发人员通过Filter技术,最常见的字符集编码的过滤,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理
方法1: 使用自带的FilterRegistrationBean 完成过滤器的设置
一:先准备过滤器:
package com.example.spingbootdemo1.listener; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest= (HttpServletRequest) request; HttpServletResponseWrapper httpServletResponseWrapper=new HttpServletResponseWrapper((HttpServletResponse) response); if (httpServletRequest.getRequestURI().indexOf("/login") !=-1||httpServletRequest.getRequestURI().indexOf("/onlineCount") !=-1||httpServletRequest.getRequestURI().indexOf("/index") !=-1) { chain.doFilter(request, response); }else{ httpServletResponseWrapper.sendRedirect("/login"); } } @Override public void destroy() { } }
二.创建的配置类MyMvcConfig中添加如下代码
@Bean public FilterRegistrationBean filterRegist() { FilterRegistrationBeanfrBean=newFilterRegistrationBean(); frBean.setFilter(newMyFilter()); frBean.addUrlPatterns("/*"); returnfrBean; }
方法2: 使用@WebFilter注解完成过滤器的设置
同监听器