免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1298 | 回复: 0
打印 上一主题 下一主题

学习一下过滤器使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-19 11:46 |只看该作者 |倒序浏览

                通过添加一个或多个过滤器,您可扩展和增强应用程序,且可单独应用过滤器,或以称作过滤器链的系列形式应用过滤器。
从开发人员的角度看,过滤器是一个 Java 类,它实施
javax.servlet
.Filter
中所定义的接口。关键方法是 doFilter,它具有以下特征码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
下面的图表展示了三个场景中的请求/响应流程:具有一个客户端 (C) 和一个 servlet (S) 但没有过滤器的应用程序,使用一个过滤器 (F) 的同一个应用程序,以及在一个过滤器链中使用两个过滤器(F1 和 F2)的同一个程序。注意,虽然过滤器可以修改请求或响应对象,但是它并不一定要执行该操作。过滤器可以传递对象,而同时保持它未被修改。并且,您在后端无需 servlet 即可使用过滤器 — 您可以通过配置应用程序服务器(或其它容器)将过滤器应用于任何请求。
  
     
无过滤器
一个过滤器
两个过滤器链
   
     
      



除了实施过滤器外,您必须编辑 Web 应用程序部署描述符文件 (web.xml),容器才能找到并调用该过滤器。
我们的WEB容器需要看web.xml才能找到相关的过滤器出来!
    FilterAllRequests
    mypackage1.FilterOne
  
  
    FilterAllRequests
    /*
  
跟传统的servlets是一样的配置。指定具体的实施过滤器的类及其映射URL
这里是定义另一个过滤器的 XML 代码。由于在  元素中指定了值,此容器只有在接收到对 /mydocs 目录中的资源的请求时才会应用该过滤器。
  
     
      
        ...
  
    FilterMyDocs
    mypackage1.FilterTwo
  
  
    FilterMyDocs
    /mydocs/*
  
其中的表示的是 这个过滤器是应用于哪个目录的资源的时候才会有使用到这个过滤器的!
若要定义一个过滤器链,请在配置文件中放置两个或更多个过滤器声明,并为  元素提供合适的值。例如,如以下代码所示,当容器接收到类似于 http://127.0.0.1:8989/mydocs/foo.html 等资源的请求时,它将应用 FilterAllRequests 和 FilterMyDocs。如果两个或更多个过滤器应用到同一个资源,则按照它们在配置文件中显示的先后次序调用它们。
  
     
      
        ...
  
    FilterAllRequests
    mypackage1.FilterOne
  
  
    FilterAllRequests
    /*
  
  
    FilterMyDocs
    mypackage1.FilterTwo
  
  
    FilterMyDocs
    /mydocs/*
  
像这样的话会有两个过滤器处理的!
/* 表示的是全部的URL的。肯定要用到了
...
现在来看几个实例整理一下:
过滤器说白了比如说验证用户是否登录。在ASP中得一个一个页面去验证麻烦。
如果很多页面,这样一个个去判断是很繁琐的一件事啊,想请教下能否向JAVA中实现那样,写个专门的类,然后再在配制文件中进行配制就可以了,在整个程序中都有效啦
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84280/showart_2073145.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP