JSP 过滤器

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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值