java当中的Filer过滤器

发布时间:2024年01月15日

1.过滤器的使用

1.1过滤器的接口

过滤器有三大接口

1.init是在初始化阶段
2.doFiler是拦截和过滤阶段
3.销毁阶段

总结:一般进行过滤器处理的时候,大部分时间只要在doFiler当中写逻辑就可以
1.2使用注解进行配置

使用注解进行配置,需要使用@WebFiler

常用的配置项

filterName

该filter的名字

initParams初始化参数
displayNamefilter显示名称
servletNames指定对哪些servlet进行过滤
asyncSupported是否支持异步模式
urlPatterns指定拦截路径
value指定拦截路径
注意:urlPatterns和value是一样的。urlPatterns和value只能配置一个,不能两个都配置,两个都配置就会报错。

2.FilerConfig和FilerChain的使用

2.1 FilerConfig是init当中的一个参数,

getFilterName()

获取filter的名称

getServletContext()获取ServletContext
getInitparamter(String var1)获取配置的初始参数的值
getInitParamterNames()获取配置的所有参数名称

2.2 FilerChain是doFiler当中的一个参数

这个方法是用来对拦截进行放行的

注意:如果有多个拦截,它们的执行顺序是按照字符顺序来执行。例如有2个过滤器,一个是AFilter,一个是BFilter,那么AFilter就会先执行。(注解方式)
如果我们是在web.xml中配置的过滤器,那么过滤器的执行顺序就是<filter-mapping>在web配置的顺序,配置在上面那么就会先执行。

3.更加详细的请看这个:详细介绍Filer
下面将是独家见解?:

过滤器与重定向和请求转发的那些事

在进行过滤的时候,如果是对网页进行请求转发,那么这个网页会经过过滤器,如果是重定向跳转,那么这个网页就不会经过过滤器,会直接进入到网页当中(在做实验的时候需要注意缓存问题)
处理:dispatcherTypes={DispatcherType.REQUEST,Dispatcher.FORWARD},在@WebFilter注解当中加上这个就可以使得,请求转发的网页不能直接跳转,要经过过滤器


文件过滤

当我想要一个admin目录下面的文件进行过滤的时候可以使用@WebFiler(urlPatterns="/admin/*")这样就可以对admin目录下面的文件进行过滤,但是这时我还想要对应该名称叫HelloServlet的Java程序进行过滤,有如下的方法进行过滤
1.@WebFiler(urlPatterns={"/admin/*","/HelloServlet"})//这样是对admin目录下面的文件和HelloServlet进行过滤

2.@WebFiler(urlPatterns="/*")//这个是对所有的文件进行过滤
3.HelloServlet文件@WebServlet("/HelloServlet")原本是这样,我们将@WebServlet("/admin/HelloServlet")改为这样就也可以对HelloServlet进行过滤了,同时admin目录下面的文件也可以进行过滤。

文章来源:https://blog.csdn.net/weixin_61908420/article/details/135580084
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。