只有授权的用户才能访问一些页面,如果我们一个一个配置还是太复杂了,所以我们可以用过滤器来进行统一管理页面。我只有过滤器允许的才会到达对应的Servlet,就像一堵墙,而且我们可以设置多层。

添加过滤器
非常简单,实现Filter接口就好了:
1 | //路径的匹配规则和Servlet一致,这里表示匹配所有请求 |
我们在里面加点东西:
1 | HttpServletRequest request = (HttpServletRequest) servletRequest; |
我们发现所有请求都要经过这个过滤器,并且都没有相应内容。
那么如何到达Servlet呢?只需要最后面加一句:
1 | filterChain.doFilter(servletRequest, servletResponse); |
这个是过滤链,它会去第二层过滤器,如果没有的话将会去对应的Servlet
1 |
|
这样的话他会先打印过滤器1,再打印过滤器2,再跳转到Servlet。

同Servlet一样,Filter也有对应的HttpFilter专用类,它针对HTTP请求进行了专门处理,因此我们可以直接使用HttpFilter来编写:
1 | public abstract class HttpFilter extends GenericFilter { |
我们只需要实现最下面的doFilter就好,来实现一下不登录访问域下所有Servlet需要过滤:
1 |
|
以上。
说些什么吧!