过滤器

来源:互联网 发布:淘宝里怎么申请信用卡 编辑:程序博客网 时间:2024/05/17 03:41

过滤器在源数据和目的数据之间起过滤作用的中间组件。








过滤器在Web开发中的一些主要应用:
▶对用户请求进行统一认证
▶对用户的访问请求进行记录和审核
▶对用户发送的数据进行过滤或替换
▶转换图像格式
▶对响应内容进行压缩,减少传输量
▶对请求和响应进行加解密处理
▶触发资源访问事件
▶对XML的输出应用XSLT

Filter API
javax.servlet.Filter接口
▶public void init(FilterConfig filterConfig) throws ServletException
    Web容器调用该方法来初始化过滤器。利用FilterConfig对象可以得到ServletContext对象,以及在部署描述符中配置的过滤器的初始化参数。
▶public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws java.io.IOException,ServletException
    对请求和响应进行处理,实现过滤器的特定功能。在特定的操作完成后,可以调用chain.doFilter(req,res)将请求传给下一个过滤器(或目标资源),也可以直接向客户端返回响应信息,或者利用RequestDispatcher的forward()和include()方法,以及HttpServletResponse的sendRedirect()方法将请求转向到其他资源。过滤器的使用并不依赖于具体的协议。
▶public void destroy()
    释放过滤器使用的资源。Filter接口并没有相应的实现类可供继承,要开发过滤器,只能直接实现Filter接口。
javax.servlet.FilterConfig接口
▶public java.lang.String getFilterName()
    得到在部署描述符中指定的过滤器的名字
▶public java.lang.String getInitParameter(java.lang.String name)
    返回在部署描述符中指定的名字为name的初始化参数的值。
▶public java.util.Enumeration getInitParameterNames()
    返回过滤器中所有初始化参数的名字的枚举集合
▶public ServletContext getServletContext()  
    返回Servlet上下文对象的引用。
javax.servlet.FilterChain接口
▶public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws java.io.IOException,ServletException

过滤器的部署











在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。

<filter-mapping>元素用于指定过滤器关联的URL样式或者Servlet。





▶REQUEST
    当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispather的include()或forward()方法访问时,该过滤器将不会被调用。
▶INCLUDE
    目标资源是通过RequestDispatcher的include()方法访问时,该过滤器将被调用,除此之外,过滤器不会被调用。
▶FORWARD
    目标资源是通过RequestDispatcher的forward()方法访问时,该过滤器将被调用,除此之外,过滤器不会被调用。 
▶ERROR
    目标资源是通过声明式异常处理机制调用时,该过滤器将被调用。除此之外,过滤器不会被调用。

0 0
原创粉丝点击