Filter入门Demo

来源:互联网 发布:手机导航软件排名 编辑:程序博客网 时间:2024/05/22 04:56

Filter即为过滤器,能实现整体或局部过滤的功能,入门开发例子如下

新建class类 FilterDemo1,并实现javax.servlet.Filter

package cn.itcast.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class FilterDemo1 implements Filter {//实现javax.servlet.Filterpublic void init(FilterConfig filterConfig) throws ServletException {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("doFilter");//放行chain.doFilter(request, response);}public void destroy() {}}


配置web.xml文件(Filter配置在servlet之前)


<filter><filter-class>cn.itcast.web.filter.FilterDemo1</filter-class><filter-name>FilterDemo1</filter-name></filter><filter-mapping><filter-name>FilterDemo1</filter-name><url-pattern>/*</url-pattern><!--过滤根目录下所有文件--></filter-mapping>



如果有多个Filter,形成Filter链的话,执行顺序是按照web.xml中配置的顺序,从上到下执行的,并且,执行过程中,先执行每个chain.doFilter(request,,response),然后倒着执行chain后面的内容,Demo如下

FilterDemo1

package cn.itcast.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class FilterDemo1 implements Filter {//实现javax.servlet.Filterpublic void init(FilterConfig filterConfig) throws ServletException {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("doFilter  1");//放行chain.doFilter(request, response);System.out.println("do after 1");}public void destroy() {}}
FilterDemo2

package cn.itcast.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class FilterDemo2 implements Filter {public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("Filter 2");chain.doFilter(request, response);System.out.println("do after 2");}public void init(FilterConfig filterConfig) throws ServletException {}}

web.xml配置文件如下

<filter><filter-class>cn.itcast.web.filter.FilterDemo1</filter-class><filter-name>FilterDemo1</filter-name></filter><filter-mapping><filter-name>FilterDemo1</filter-name><url-pattern>/*</url-pattern><!--过滤根目录下所有文件--></filter-mapping><filter><filter-class>cn.itcast.web.filter.FilterDemo2</filter-class><filter-name>FilterDemo2</filter-name></filter><filter-mapping><filter-name>FilterDemo2</filter-name><url-pattern>/*</url-pattern><!--过滤根目录下所有文件--></filter-mapping>

则执行的结果如下所示:

doFilter  1
Filter 2
do after 2
do after 1


0 0
原创粉丝点击