`
prodream
  • 浏览: 102429 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

拦截器(Interceptor)

阅读更多

Interceptor 拦截器,是AOP概念

 

1.关于Interceptor原理及简单运用:

   参考:http://tech.ddvip.com/2009-01/1232351683106360.html

 

2.关于AOP:

  

 

3.struts-default.xml中定义的一些interceptor

 

l          timer:记录Action执行的时间,并做为日志信息输出;
l          logger:在日志信息中输出要执行的Action信息;
l          chain:将前一个执行结束的Action属性设置到当前的Action中。它被用在ResultType为“chain”指定结果的Action中,该结果Action对象会从OgnlValueStack中获得前一个Action对应的属性,它实现Action链之间的数据传递;
l          static-params:将xwork.xml配置文件里定义的Action参数,设置到对应的Action中。Action参数使用<param />标签,是<action />标签的直接子元素。我们这里定义的Action类必需实现com.opensymphony.xwork.config.entities. Parameterizable接口;
l          params:将Request请求的参数设置到相应Action对象的属性中,用户注册例子用到过这个拦截器;
l          model-driven:如果Action实现ModelDriven接口,它将getModel()取得的模型对象存入OgnlValueStack中;
l          component:激活组件功能支持,让注册过的组件在当前Action中可用,即为Action提供IoC(依赖倒转控制)框架的支持;
l          token:核对当前Action请求(request)的有效标识,防止重复提交Action请求(request)。
l          token-session:功能同上,但是当提交无效的Action请求标识时,它会将请求数据保存到session中。
l          validation:实现使用xml配置文件({Action}-validation.xml)对Action属性值进行验证,详细请看后面介绍的验证框架。
l          workflow:调用Action类的验证功能,假设Action使用ValidationAware实现验证(ActionSupport提供此功能),如果验证没有通过,workflow会将请求返回到input视图(Action的<result />中定义的)。
l          servlet-config:提供Action直接对HttpServletRequest或HttpServletResponse等JavaServlet api的访问,Action要实现相应的接口,例如:ServletRequestAware或ServletResponseAware等。如果必需要提供对JavaServlet api的访问,我们建议使用ServletActionContext,在前面ActionContext章节中有介绍。
l          prepare:在Action执行之前调用Action的prepare()方法,这个方法是用来准备Action执行之前要做的工作。它要求我们的Action必需实现com.opensymphony.xwork. Preparable接口
|         conversionError:用来处理框架进行类型转化(Type Conversion)时的出错信息。它将存储在ActionContext中的类型转化(Type Conversion)错误信息转化成相应的Action字段的错误信息,保存在堆栈中。根据需要,可以将这些错误信息在视图中显示出来。

 

4.使用struts-default.xml中的Interceptor

   引入:

         <include file="struts-default.xml" />

  action配置中声明使用interceptor

        <interceptor-ref name="timer"></interceptor-ref>
 

4.使用自定义Interceptor 过程

 

   创建Interceptor,实现Interceptor或者直接继承AbstactInterceptor

 

   关于创建Interceptor的细节,在下一篇介绍

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics