过滤器和监听器

过滤器和监听器


过滤器

什么是过滤器

一种可以拦截请求和响应,并且可以做出一些修改或判断功能的可插拔组件。

如何编写过滤器

  1. 编写一个实现Filter接口的类
  2. 注册过滤器
/**
 * 在容器启动时,容器会立即创建Filter的实例,
 * 创建实例后,会把已经准备好的FilterConfig对象传给init方法
 * 只调用一次init方法
 * 
 * 通过FilterConfig可以获取到配置文件中有关过滤器的一些初始化参数
 */
public void init(FilterConfig config) throws ServletException {}

/**
 * doFilter用于设置过滤的具体逻辑
 * 该方法有三个参数:
 *      request:    拦截请求时截获的请求对象,即request对象
 *      response:   与拦截的请求对应的响应对象,即response对象
 *      chain:      过滤器链对象(FilterChain),该对象可以决定请求传给后序的servlet还是直接提供响应
 */
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {}

/**
 * 当容器销毁过滤器实例时调用的方法,只调用一次
 */
public void destroy() {}

过滤器的优先级

当存在多个过滤器时,执行过滤器的顺序以Filter-mapping的顺序为准

过滤器初始化参数

在注册过滤器节点中,添加< init-param>节点来设置初始化参数,在过滤器中使用FilterConfig对象就可以获取配置的初始化参数值

当请求执行结束后,响应在回到客户端以前,还需要再执行一遍过滤器,执行所有doFilter()方法后面的代码段.如果有多个过滤器时,后面的过滤器先执行

获取servletContext的四种方法

Servlet–>GenericSerlvet–>HttpServlet
1. GenericServlet对象的 getServletContext()
2. HttpSession 对象的 getServletContext()
3. ServletCongfig 对象的 getServletContext()
4. FilterConfig 对象的 getServletSontext()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值