javax.servlet.Filter _Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2098 | 回复: 0   主题:  javax.servlet.Filter         下一篇 
derek
注册用户
等级:中校
经验:1550
发帖:209
精华:0
注册:2011-7-21
状态:离线
发送短消息息给derek 加好友    发送短消息息给derek 发消息
发表于: IP:您无权察看 2015-12-23 16:28:31 | [全部帖] [楼主帖] 楼主

Filters是在请求资源(Servlet或静态内容)或者响应资源时,也可以在请求和响应同时进行时,执行过滤任务。
Filters通过doFilter方法来执行过滤的。每个过滤都要访问一个FilterConfig对象,该对象包含了初始参数,要引用的ServletContext对象。例如,在调入资源时,执行过滤。
Filters是被配置在web.xml配置文件中的。
一些需要过滤器的情况:
    (1)认证Filter
    (2)日志和审核Filter
    (3)图片转换Filter
    (4)数据压缩Filter
    (5)密码Filter
    (6)令牌Filter
    (7)触发资源访问事件的Filter
    (8)XSL/T Filter
    (9)媒体类型链Filter
方法列表:
    (1)destory():当Filter从服务中去除时,由servlet container来调用。在Filter的doFilter()的所有线程退出时或在一个时间周期结束后该方法仅会被调用一次。在web container调用过该方法后,该filte的r实例将不会再调用doFilter()。
    该方法提供给Filter一个清除任意资源的时机,这些资源可能是被保存的(例如,内存、文件句柄、线程)或确保持久状态是和在内存Filter的状态是同步的。
    (2)doFilter(ServletRequest request, ServletResponse response, FilterChain chain):Filter的doFilter方法是在每次一个请求或响应时被调用,来处理过滤链最后的客户端请求资源。FilterChain被传入到此方法中,允许过滤器将request,response传递到过滤链的下一个过滤。
    这个方法的典型设计应该是遵循以下的模式:
        <1>检测request
        <2>通过特定过滤器对请求数据的内容或头信息进行过滤,并重新封装成request对象
        <3>通过特定过滤器对响应数据的内容或头信息进行过滤,并重新封装成response对象
        <4>通过chian对象调用过滤链的下一个过滤器,或不传递request/response到过滤链的下一个过滤器从而阻挡请求处理。
        <5>在过滤链的下一个过滤器被调用后,直接设置头信息到response对象
    (3)init(FilterConfig config):当Filter被放入到服务中时,由servlet container来调用。在实例化Filter后,init会被调用一次。有两种情况,容器不会将将Filter放入服务中:
        <1>抛出ServletException时
        <2>在容器规定的时间内没有返回实例


--转自北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论