struts2以可插拔式来管理action需要完成的通用操作。
系统为拦截器指定参数的两种形式:
(1)定义拦截器时指定参数值(<intercepter ...>)
(2)使用拦截器时指定参数值(<intercepter-ref ...>)
配置默认拦截器
<default-interceptor-ref name="defaultStack"/>做为包的子元素
在有时,如权限,日志等都要用到自定义拦截器。
自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor
public interface Interceptor extends Serializable {
void destroy();
void init();
String intercept(ActionInvocation invocation) throws Exception;
}
除此之外还提供AbstractInterceptor类,该类实现了Interceptor接口,该类提供了一个destory()和init()的空实现
当我们实现intercept(ActionInvocation invocation)方法时,可以获得invocation参数,这个参数可以获得被拦截的action实例,一旦取得Action,几乎获得了全部的控制权
注意如果为Action指定了一个拦截器,则系统默认拦截器或拦截器栈会失去作用,还需要手动引入默认拦截器
加入一拦截器栈多个引用拦截器出现参数名一样的情况啥办?
参数名换成:<拦截器名>.<参数名>
深入拦截器
如果我们为某个Action定义了拦截器,则该拦截器会拦截Action的所有方法(execute,method定义的方法)
方法过滤:MethodFilterInterceptor该类是AbstractInterceptor子类,该类重写了intercept方法
public String intercept(ActionInvocation invocation) throws Exception {
if (applyInterceptor(invocation)) {
return doIntercept(invocation);
}
return invocation.invoke();
}
...
public void setIncludeMethods(String includeMethods)
...
public void setExcludeMethods(String excludeMethods)
...
也就是说我们需要重写doIntercept方法。上面两个set方法,一个是需要拦截的方法,一个是不需要拦截的方法。只需在指定参数即可
注意:如果一个方法同时出现在includeMethods和excludeMethods,则该方法会被拦截
拦截器的执行顺序:配置在前面的拦截器,在被拦截方之前的拦截动作,将会先起作用;如果是在拦截方法之后的拦截动作,将会后对用户起作用
拦截结果的监听器
为了精确定义在execute方法执行结束后,在处理result执行的动作,struts2提供了用于拦截结果的监听器,这个监听器是通过手动注册到拦截内部的
public class myIterceptorListener implements PreResultListener{
public void beforeResult(ActionInvocation invocation, String resultCode) {
System.out.println("逻辑视图返回 "+resultCode);
}
}
..
public String intercept(ActionInvocation invocation) throws Exception {
invocation.addPreResultListener(new myIterceptorListener());//注册拦截器监听器
converAction co=(converAction)invocation.getAction();
System.out.println(name+"拦截器开始时间:"+new Date());
long start=System.currentTimeMillis();
//执行该拦截器的下一个拦截器,或者直接ACTION的execute方法
String result=invocation.invoke();
System.out.println(name+"拦截器的动作---"+"执行完Action的时间为"+new Date());
long end=System.currentTimeMillis();
System.out.println(name+"拦截器执行完Action所用时间"+(end-start)+"毫秒");
return result;
}
分享到:
相关推荐
了解了拦截器的基本原理后,我们可以通过`Struts2.x 拦截器.avi`这个视频文件深入学习Struts2拦截器的实现细节,比如如何编写自定义拦截器、如何配置拦截器链、如何处理异常等。`readme.txt`可能是关于这个主题的...
本篇将详细介绍WebWork中的核心概念——拦截器(Interceptor)以及验证(Validation)机制,并结合提供的帮助文档进行学习指导。 首先,我们来理解WebWork的拦截器机制。在WebWork中,拦截器是处理请求的关键组件,...
总的来说,这个压缩包提供的资料涵盖了SSM框架的基本配置、Struts2的文件上传和拦截器的深入理解,对于想要学习和使用这些技术的开发者来说是非常有价值的资源。通过实践这些教程,你可以更好地掌握企业级应用开发的...
本课程设计的主题是“骚扰短信拦截器”,它旨在帮助用户自动过滤掉不必要的、烦人的或者潜在的垃圾短信,从而提高日常生活中的通信质量。在这个项目中,我们将深入探讨Android系统架构、短信API的使用以及实现拦截器...
WPE(Winsock Packet Editor)是一款广泛用于...用户可以下载并按照指导进行配置和使用,以探索和学习更多关于网络封包截取和修改的知识。在实际操作时,建议先从模拟环境或非正式游戏服务器开始,以避免不必要的麻烦。
可能包含关键组件如日志拦截器、日志存储策略、日志过滤器等。 为了充分利用这个开源项目,开发者应按照`JavaApk源码说明.txt`中的指导进行操作,理解并集成日志记录库。同时,通过调试和实验,开发者可以更好地...
- **实现方式**:指导如何自定义拦截器。 **7.5 深入拦截器编程** - **7.5.1 拦截方法的拦截器** - **实现方式**:介绍如何编写用于拦截特定方法的拦截器。 - **7.5.2 拦截器的执行顺序** - **实现方式**:描述...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎...3. 积分资源不提供使用问题指导/解答
13. **Struts框架**:作为轻量级框架的代表,Struts提供了MVC架构,学习其工作流程,配置文件,以及自定义标签和拦截器。 14. **Hibernate框架**:学习ORM框架Hibernate,它简化了数据库操作。掌握实体映射,多表...
这本书可能详细解释了Struts2的工作原理,如Action、Interceptor(拦截器)、Result和ValueStack等核心概念。它还会介绍如何创建和配置Struts2应用,以及如何处理表单提交、文件上传、国际化等常见任务。 "struts2...
2. **拦截器**:Struts2.0的拦截器是其强大功能的关键,这些文档可能深入讨论了不同预定义的拦截器(如Validation、I18n、Exception处理等),以及如何自定义拦截器来扩展框架功能。 3. **Action与结果**:可能涉及...
- **拦截器链**:了解如何创建和使用自定义拦截器,以及预定义的拦截器如Params、Validation、Exception等。 - **国际化和本地化**:学习如何实现多语言支持,使用资源包进行文本国际化。 - **动态方法调用**:...
这个"Struts2学习手册"旨在为初学者提供全面的指导,帮助他们快速掌握Struts2的核心概念和实践技巧。 Struts2的核心是模型-视图-控制器(MVC)设计模式,它简化了Web应用的开发流程。 MVC模式将业务逻辑(模型)、...
4. **Interceptor**:拦截器是Struts2的核心组件,它们按照预定义的顺序在Action执行前后进行拦截,实现如日志、权限验证等通用功能。 5. **ValueStack**:值栈是Struts2中的一个重要数据结构,用于存储Action和...
虽然笔记中没有提供源代码,但学习过程中可以通过模仿示例创建简单的Struts2应用,如用户登录注册系统,熟悉Action配置、视图展现和拦截器的使用。 总结,黑马程序员Struts2 2016版的前3Days笔记重点介绍了Struts2...
标题"Struts2入门笔记1-4"暗示了这是一个关于Struts2基础知识的学习过程,涵盖了从基础到进阶的内容,可能包括了Struts2的核心概念、配置、拦截器以及实际应用等。 描述中提到,Struts2的控制实现是通过Filter来...
教学文档可能涵盖了从安装配置到实际应用开发的全程指导,包括控制器的定义、模型数据的传递、结果映射的设置、自定义拦截器的编写等。这些文档通常以逐步的方式引导学习者,帮助他们从零开始掌握Struts2。 6. **...
这个函数作为DDPG算法中的奖励信号,指导无人机学习如何调整控制策略以达到预期的飞行轨迹。 6. 控制器的训练和仿真试验:通过离线训练得到的轨迹跟踪一体化控制器,在仿真环境中进行了多次试验。试验结果证明了所...
Chronos的核心功能之一是网站拦截器。这个功能允许用户自定义规则来阻止或允许访问特定的网站,从而避免不必要的分心和提高工作效率。用户可以设置白名单或黑名单,确保在工作时只访问与任务相关的网站。 **标签...
4. 拦截器深入:详细解释拦截器链,如何自定义拦截器以及它们在业务流程中的作用。 5. 国际化:演示如何实现多语言支持。 6. JSP标签库:介绍Struts2提供的JSP标签,如s:form、s:textfield等,提高开发效率。 7. ...