Struts2.0 第04章 Interceptor.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Struts2.0 第04章 Interceptor

第四章 Interceptor Interceptor(拦截器)顾名思义就是在某个事件发生之前将其拦截,并插入相应的处理过程。从这点上来看,拦截器类似于在Servelet规范中定义的Filter,但是Struts2的拦截器完全独立于Servelet的Filter,而且两者有着截然不同的实现。Interceptor将很多通用的功能从Action中独立出来,大大减少了Action中重复的代码量,通过组装Interceptor可以使得通用的逻辑按照顺序执行,并且当业务逻辑顺序发生变化的时候也不需要重新编写代码,只需重新组装Interceptor即可,从而降低web应用的耦合性。 在开发Web应用的过程中,会碰到很多可以复用的模块,如果不采取任何策略,无疑会增加应用的重复代码量。Interceptor就是Struts2对这些可复用的应用模块加以管理的策略。通过Interceptor可以把通用的模块从Action中提取出来,供应用中的其它Action应用,甚至是供其它项目复用。 4.1 Interceotor基础 对于拦截器而言,最主要就是要清楚拦截器在什么时候开始被调用,以及Struts2中是如何实现拦截器,最后还要清楚Struts2中自带的拦截器有哪些,只有了解这些,才可以为以后使用拦截器打下基础。 4.1.1 Interceptor何时调用 让我们来看看Interceptor到底在什么时候被调用,又是如何被调用。首先让我们来分析com.opensymphony.xwork2.DefaultActionInvocation源代码看看一般的Action调用流程,注意下面的代码片断。 DefaultActionInvoation.java /*省略其他方法*/ public String invoke() throws Exception { if (executed) { throw new IllegalStateException(Action has already executed); } if (interceptors.hasNext()) { InterceptorMapping interceptor = (InterceptorMapping) interceptors.next(); resultCode = interceptor.getInterceptor().intercept(this); } else { resultCode = invokeActionOnly(); } /*省略语句*/ } 在执行Action之前,Struts2会检查Action是否配置有拦截器,如果有,遍历所有拦截器并且执行之,如果对应的Action没有配置拦截器,那么Struts2将只执行Action。但是似乎并没有看到Action和Interceptor的执行的先后次序,别着急,让我们看看其它的代码里有没有关于Interceptor的执行先后次序。Xwork的拦截器都必须实现Interceptor接口,但是实际上大部分的拦截器都是通过继承抽象类AbstractInterceptor实现拦截器的功能。下面来了解下AbstractInterceptor类的具体代码。 AbstractInterceptor.java package erceptor; import com.opensymphony.xwork2.ActionInvocation; public abstract class AbstractInterceptor implements Interceptor { public void init() { } public void destroy() { } public abstract String intercept(ActionInvocation invocation) throws Exception; } 在这个抽象类中没有实现任何方法,就是一个简单Interceptor接口的实现。那么拦截器要在Action之前执行,那么只有在继承这个类时,通过实现它的抽象方法intercept()来完成拦击器的功能。也就是说在intercept()方法中会先执行拦截器想要完成的任务,然后再转向Action执行,一般函数最后会加上这句代码: String result = invocation.invoke(); 通过上面的介绍,不难发现,Interceptor的本质也是一个

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档