Servlet程序开发-- 过滤器
3种servlet:简单Servlet,过滤Servlet,监听Servlet
1. 简单Servlet:是作为一种程序所必须的开发结构保存下来的。
2. 过滤Servlet:过滤器使用的不是HttpServlet类,而是接口Filter,在javax.servlet里,此接口的主要功能是完成公共协议的,因为不在Http下。
三个主要方法:init(), doFilter(),destroy()三个函数
做一个过滤Servlet:
package org.lxh.filterdemo ; import java.io.* ; import javax.servlet.* ; public class SimpleFilter implements Filter { public void init(FilterConfig config) throws ServletException{ // 接收初始化的参数 String initParam = config.getInitParameter("ref") ; System.out.println("** 过滤器初始化,初始化参数=" + initParam) ; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{ System.out.println("** 执行doFilter()方法之前") ; chain.doFilter(request,response) ; System.out.println("** 执行doFilter()方法之后") ; } public void destroy(){ System.out.println("** 过滤器销毁。") ;
} }
配置过滤Servlet注意事项:在简单Servlet之前配置:
<filter> <filter-name>simple</filter-name> <filter-class>org.lxh.filterdemo.SimpleFilter</filter-class> <init-param> <param-name>ref</param-name> <param-value>HELLOMLDN</param-value> </init-param> </filter>
<filter-mapping>
<filter-name>simple</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<url-pattern>/*</url-pattern>
表示的不是映射路径,而是一个过滤器的过滤路径,现在既然是“/*”表示对虚拟目录下的所有文件进行过滤。
过滤器不需要任何配置和调用就可以在服务器启动的时候,自动完成初始化操作。