import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
/*过滤器对象在初始化时调用,可以配置一些初始化参数。如果
如果初始化代码要用到FilterConfig对象,那么这些初始化代码就只能在init()方法中编写。*/
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
/*
用于拦截web.xml中匹配用户的请求,如果和拦截路径匹配,该方法会被调用。
ServletRequest是HttoServletRequest的子类,Respnse同理。
如果需要用到过滤器链,则需要调用filterChain,doFilter方法传向下一个Filter*/
PrintWriter out = servletResponse.getWriter();
out.println("This is MyFilter");
}
@Override
public void destroy() {
//过滤器对象在销毁时自动调用,释放资源
}
}
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
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/MyServlet</url-pattern> //注意!url-pattern里写的是需要过滤的servlet类名,而不是Filter过滤器自己的类名
</filter-mapping>
注意!url-pattern里写的是需要过滤的servlet类名,而不是Filter过滤器自己的类名
在web.xml里配置注意拓展:
<filter>
<filter-name>ImgFilter</filter-name>
<filter-class>filter.ImgFilter</filter-class>
<init-param>
<param-name>startip</param-name>
<param-value>127.0.0.1</param-value>
</init-param>
</filter>
init-param是可选项,其内部内容可以配filter接口内的filterConfig.getInitParameter方法调用,**并且init-param标签一定要写在**filter-name和filter-class之后,否则会报错,因为文件时从上往下读的。