import javax.servlet.*;import java.io.IOException;import java.io.PrintWriter;public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {/*过滤器对象在初始化时调用,可以配置一些初始化参数。如果如果初始化代码要用到FilterConfig对象,那么这些初始化代码就只能在init()方法中编写。*/}@Overridepublic 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");}@Overridepublic 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之后,否则会报错,因为文件时从上往下读的。
