JSP 过滤器

来源:互联网 发布:洛基权杖淘宝网 编辑:程序博客网 时间:2024/05/18 14:45

一、过滤器的生命周期与常用方法

1、过滤器的生命周期

过滤器的生命周期分为四个阶段:实例化、初始化、过滤和销毁:
实例化: 在web.xml文件中声明一个过滤器,这就是实例化!
初始化: 在实例化后,服务器会调用所写的java类中的init方法.
过滤:在初始化后调用doFilter()方法,不管时响应还是请求都进行过滤!
最后,当服务器停止时,对过滤器销毁,调用destory() 方法

2、过滤器的常用方法

从上面对过滤器的生命周期的分析中可以看到,过滤器最常用的方法有三个:init()、doFilter()和destory()。
1)init()方法:这是过滤器的初始化方法,在Web容器创建了过滤器实例之后将调用这个方法进行一些初始化的操作,这个方法可以读取web.xml中为过滤器定义的一些初始化参数。
2)doFilter()方法:这是过滤器的核心方法,会执行实际的过滤操作,当用户访问与过滤器关联的URL时,Web容器会先调用过滤器的doFilter方法进行过滤。
3)destory()方法:这是Web容器在销毁过滤器实例前调用的方法,主要用来释放过滤器的资源等。

二、第一个过滤器实例

首先,创建一个java类,让继承Filter,实现init方法,doFilter,destory方法!
public class LogFiler implements Filter {    public void init(FilterConfig filterConfig) throws ServletException {        String initParameter = filterConfig.getInitParameter("test-param");        System.out.print(initParameter);    }    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        String remoteAddr = servletRequest.getRemoteAddr();        System.out.print("ip:" + remoteAddr+""+new Date().toString());        filterChain.doFilter(servletRequest,servletResponse);    }    public void destroy() {    }}
doFilter()方法中FiterChain.doFilter()方法表示将请求传给下一个过滤器或目标资源,当过滤器收到响应之后再执行FilterChain.doFilter()之后的内容。
定义了过滤器之后需要在web.xml文件中进行声明,过滤器在web.xml文件中的配置可以参考下图(转载于网络)
下面是我在web.xml文件中的配置,当用户请求URL就会触发过滤器!
<filter>    <filter-name>LogFiler</filter-name>    <filter-class>LogFiler</filter-class>    <init-param>        <param-name>test-param</param-name>        <param-value>Initialization Paramter</param-value>    </init-param></filter><filter-mapping>    <filter-name>LogFiler</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>
0 0
原创粉丝点击