要点:
如果应用了Filter,request和response都要通过它,它可以产生response或者给另外一个资源产生response。可以像Servlete那样运行,但不是Servlet(没有继承HttpServlet)
编写的要点:1;实现Filter接口
2;实现Filter接口中的生命周期方法。这些方法也称为生命周期方法,包括下面的init方法、doFilter方法和destroy方法;
3;doFilter方法控制Filter后执行的下一步。
在Filter方法中,它可以像Servlet那样产生输出,最后调用下面的代码把控制转向到配置文件中定义的Servlet:
filterChain.doFilter(request,response); 该代码的功能很像Servlet的Forward,它把控制交给Servlet,这个Servlet不在Filter的代码中出现,而是在web.xml中设置 。这样做的好处是让一个Filter不依赖于某个Servlet而存在,即从代码上看,它和它要“过滤”的Servlet没有直接的关联。
web.xml中的配置 :
<filter>
<filter-name>servletfilter</filter-name>
<filter-class>servletfilter.ServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>servletfilter</filter-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>