您的位置:首页 > 其它

过滤器和监听器

2015-09-08 22:19 323 查看

过滤器和监听器

过滤器

什么是过滤器

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

如何编写过滤器

编写一个实现Filter接口的类

注册过滤器

/**
* 在容器启动时,容器会立即创建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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  filter