Web开发中的过滤器设计

 
      五一快到,办公室天天有人讨论去哪去哪玩的,明天公司又集体组织在岛内玩一天,现在都没什么心思工作了,还好任务不多,老总出差不在,可以放肆一下,呵呵..
      翻了翻以前学习web开发时留下的学习文档,感觉有些拿出来复习复习还是很有用的。下面是一篇有关web.xml中过滤器设计的学习体会,希望对大家有些帮助。
Web开发中的过滤器设计
 
在web.xml文件中,过滤器的声明如下:
Element : filter
Content Model : (((description*, display-name*, icon*)), filter-name, filter-
 class, init-param*)
 
其中的filter-name在引用该filter时就会用到。
init-param 可以有多个,用来对该过滤器定义的参数(通常是全局变量)进行初始化,初始化是在调用该过滤器时发生的。注意的是要真正让其起作用,还需要在该过滤器的init方法内进行调用:
this.param = filterConfig.getInitParameter("param");///得到在web.xml中配置的编码
 
为了让过滤器工作,只声明是不够的,我们还需要确定该Filter的作用域:
Element : filter-mapping
Content Model : (filter-name, (url-pattern | servlet-name), dispatcher*)
 
filter-name 对应filter声明的filter-name
url-pattern 为url地址映射,任何url字符串含有该url-pattern的定义将被映射(或者说,重定向)到filter-name。
servlet-name 与url-pattern类似,一般的url-pattern定义的是jsp页面的重定向,而servlet-name定义的是对servlet类的引用。注意的是servlet在大多数的应用服务器的web容器内具有一个缺省的url路径:
如果直接在页面调用servlet会暴露servlet的真实地址,并且不利于定制url,也就需要我们对其进行一定的设置。另外,如果使用缺省的url是不能从init(jsp对应于jspinit)方法读取初始化参数的。为避免误用缺省的url造成不能初始化参数的问题,可以使用下面两种方法:
1、 在每个Web应用中重新映射/servlet/模式
也就是重定向servlet
2、 全局关闭激活器servlet
这个在某些应用服务器是不支持的。它需要对服务器的web.xml(不是项目中的web.xml)进行配置。
 
过滤器对请求分发器( Request Dispatcher)的控制
 
Servlet 2.4版的Web程序增强了filter和request dispatcher的配合功能,这样过滤器可以根据请求分发器(request dispatcher)所使用的方法有条件地对Web请求进行过滤。
在web.xml中,Dispatcher的有4个值可以选择:REQUEST、FORWARD、INCLUDE、ERROR。缺省或不设置时为REQUEST
要注意的是,Dispatcher可以对传进来的请求(request)起作用,也可以对传递出去的请求(response)进行控制。
设定元素的过滤器
  ·只有当request直接来自客户(来自客户端的请求),过滤器才生效,对应为REQUEST条件。
  ·只有当request被一个请求分发器使用forward()方法转到一个Web构件时(采用或定义),对应称为FORWARD条件。
  ·类似地,只有当request被一个请求分发器使用include()方法转到一个Web构件时(采用或定义),对应称为INCLUDE条件。
   ·只有当request被一个请求分发器使用“错误信息页”机制方法转到一个Web构件时,对应称为ERROR条件。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值