- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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的本质也是一个
您可能关注的文档
- 51单片机学习板使用说明.pdf
- 4830完美变4850.doc
- 5可视化管理.ppt
- 苗木种植中使用的先进技术专项技术报告.doc
- 60335-2-64报告模板.doc
- 60335-2-79报告.doc
- 6S教育训练资料.doc
- 830余名师生无一伤亡 “玉树最牛学校”升旗复课.doc
- 7工程施工质量检验与评定规程(SL176—2007).doc
- ajax+servlet实现自动刷新.docx
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)