Filter的入门

xiaoxiao2021-02-27  184

什么是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结束。

转载请注明原文地址: https://www.6miu.com/read-13198.html

最新回复(0)