什么是过滤器
Servlet规范当中定义的一种特殊的组件,可以拦截Servlet容器的调用过程并进行相应的处理。某个过滤器只有一个实例,即单例模式。
如何写一个过滤器
- step1:写一个Java类,实现Filter接口
- step2:在doFilter方法里面,编写处理逻辑
- step3:web.xml中配置过滤器
注意事项:Filter的xml配置在Servlet的xml配置前!
<filter>
<filter-name>filter1</filter-name>
<filter-class>web.CommentFilter1</filter-class>
<init-param><!-- 过滤器的初始化参数 详见14.5-->
<param-name>illegalStr</param-name>
<param-value>cat</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/comment</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>CommentServlet</servlet-name>
<servlet-class>web.CommentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CommentServlet</servlet-name>
<url-pattern>/comment</url-pattern>
</servlet-mapping>
过滤器的优先级
如果有多个过滤器都满足过滤的条件,则容器会依据<filter-mapping>的先后顺序来调用过滤器。所以filter的顺序是在web.xml中定义的<filter>标签的顺序。
初始化参数
step1:使用<init-param>配置初始化参数
step2:调用FilterConfig.getInitParameter(String parameter);返回一个字符串
优点
1)可以实现代码的“可插拔性”(增加或减少某个模块,不会影响程序的正常运行)。
2)可以将多个组件相同的处理逻辑集中写在过滤器里面,方便代码的维护。如:四个Web组件都需要session验证,把验证写在一个过滤器即可。配置中写“/*”,拦截所有请求。
网友评论