1. import javax.servlet.*;
    2. import java.io.IOException;
    3. import java.io.PrintWriter;
    4. public class MyFilter implements Filter {
    5. @Override
    6. public void init(FilterConfig filterConfig) throws ServletException {
    7. /*过滤器对象在初始化时调用,可以配置一些初始化参数。如果
    8. 如果初始化代码要用到FilterConfig对象,那么这些初始化代码就只能在init()方法中编写。*/
    9. }
    10. @Override
    11. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    12. /*
    13. 用于拦截web.xml中匹配用户的请求,如果和拦截路径匹配,该方法会被调用。
    14. ServletRequest是HttoServletRequest的子类,Respnse同理。
    15. 如果需要用到过滤器链,则需要调用filterChain,doFilter方法传向下一个Filter*/
    16. PrintWriter out = servletResponse.getWriter();
    17. out.println("This is MyFilter");
    18. }
    19. @Override
    20. public void destroy() {
    21. //过滤器对象在销毁时自动调用,释放资源
    22. }
    23. }

    init(FilterConfig filterConfig)
    /过滤器对象在初始化时调用,可以配置一些初始化参数。如果
    如果初始化代码要用到FilterConfig对象,那么这些初始化代码就只能在init()方法中编写。
    /

    doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain):
    用于拦截web.xml中匹配用户的请求,如果和拦截路径匹配,该方法会被调用。
    ServletRequest是HttoServletRequest的子类,Respnse同理。
    如果需要用到过滤器链,则需要调用filterChain,doFilter方法传向下一个Filter*/
    doFilter方法相当于放行**拦截下来的请求或资源。

    2.Filter过滤器需要在web.xml里配置需要过滤的servlet

    1. <filter>
    2. <filter-name>MyFilter</filter-name>
    3. <filter-class>filter.MyFilter</filter-class>
    4. </filter>
    5. <filter-mapping>
    6. <filter-name>MyFilter</filter-name>
    7. <url-pattern>/MyServlet</url-pattern> //注意!url-pattern里写的是需要过滤的servlet类名,而不是Filter过滤器自己的类名
    8. </filter-mapping>

    注意!url-pattern里写的是需要过滤的servlet类名,而不是Filter过滤器自己的类名

    在web.xml里配置注意拓展:

    1. <filter>
    2. <filter-name>ImgFilter</filter-name>
    3. <filter-class>filter.ImgFilter</filter-class>
    4. <init-param>
    5. <param-name>startip</param-name>
    6. <param-value>127.0.0.1</param-value>
    7. </init-param>
    8. </filter>

    init-param是可选项,其内部内容可以配filter接口内的filterConfig.getInitParameter方法调用,**并且init-param标签一定要写在**filter-name和filter-class之后,否则会报错,因为文件时从上往下读的。