什么是Filter?
Filter也称过滤器,或拦截器。能够拦截资源并进行操作,达到对web资源进行管理的目的。Filter的作用是什么?
web开发人员通过Filter技术,实现用户在访问某个资源之前,对访问的请求和响应进行拦截,简单地说就是实现web容器对某资源访问前进行截获,然后进行处理,还可以实现某资源对web容器响应返回前获取拦截,进行处理。这些资源包括以下东西:JSP、Servlet、HTML、静态图片文件等。Filter的应用地方有哪些?
实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等。如何创建一个Filter?
(1)创建一个类,实现javax.servlet.Filter接口。
(2)重写接口中的方法。方法有如下:public void init(FilterConfig config)
web容器调用此方法,说明过滤器正在被加载到web容器中。容器在实例化的时候执行该方法一次。容器为这个方法传递一个config对象,该对象包含了与Filter相关的配置信息。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
每当请求和响应经过过滤链的时候,容器都要执行一次该方法。过滤器的一个实例可以服务于多个请求,要注意线程同步问题,尽量不用或少用实例化变量。这个方法是真正对资源进行拦截和操作的方法。
public void destroy()
容器调用destroy()将过滤器从服务器中删除,如果该过滤器使用了其他资源,需要在这个方法中释放这些资源。在web.xml中进行映射配置
配置例子:
<filter>
<filter-name>demoFilter</filter-name>//设置别名,和下文别名需相同
<filter-class>com.filter.DemoFilter</filter-class>//设置过滤器的位置
<init-param>//如果不需要初始化参数,则就不需要配置
<param-name>encode</param-name>//初始化参数名称
<param-value>UTF-8</param-value>//该初始化参数的值
</init-param>
</filter>
<filter-mapping>
<filter-name>demoFilter</filter-name>//设置别名,需和上文别名相同
<url-pattern>*.jsp</url-pattern>//设置拦截资源的路径或类型
</filter-mapping>Filter中的FilterConfig的作用
<1>.获取初始化参数
public String getInitParameter(String name);获取名称为name的的参数
public Enumeration getInitParameterNames();返回枚举数组,数组中包含所有的初始化参数。<2>.获取Filter的名称
public String getFilterName();返回该Filter的名称<3>.获取servlet的配置对象
public ServletContext getServletContext();返回一个servlet的配置信息对象。Filter链的存在
FilterChain.doFilter(request,response);它代表的是向下执行,如果下一个还是过滤器,那么访问这个过滤器,如果当前是整个Filter链中的最后一个过滤器,那么访问该资源。
Filter链的顺序是由web.xml中的的配置顺序决定的,优先级由上到下递减。8.的路径配置方法
<1>.完全匹配
路径必须以“/”开始,如/day01/demo1.jsp;表示所有经过day01项目下的demo1的jsp页面。
<2>.*通配符匹配
(1)目录匹配,如格式为:/demo/或/,必须以”/”开始
(2)扩展名匹配,格式为:.do或.jpg,不能以”/”开始,且必须以*.XXX结束。
Filter的入门
最新推荐文章于 2020-02-22 16:57:41 发布