WebWork的核心是Xwork,而Xwork的核心可能就是Interceptor了。上周我在学习Action的时候已经接触到了Interceptor的概念,Interceptor的作用就是在执行Action前后进行拦截,使用户有机会执行其他操作。
在Xwork中,AOP是通过Action、ActionInvocation和Interceptor这三个接口完成的。WebWork通过Action代理类ActionProxy来执行Action的execute方法,而该方法则调用ActionInvocation的invokeAction方法具体执行Action中的方法。在DefaultActionInvocation的invoke方法中可以看到拦截器的执行逻辑,代码如下:
public String invoke() throws Exception {
......
if (interceptors.hasNext()) {
InterceptorMapping interceptor = (InterceptorMapping) interceptors.next();
resultCode = interceptor.getInterceptor().intercept(this);
} else {
resultCode = invokeActionOnly();
}
......
}
看看上周的那个DefaultWorkflowInterceptor是如何工作的:
protected String doIntercept(ActionInvocation invocation) throws Exception {
// 取得要拦截的Action对象
Object action = invocation.getAction();
if (action instanceof Validateable) {
/*
* 如果action是Validateable接口的一个实例,则执行接口的validate方法,这个方法可能是检查用户
* 输入的合法性,如果有错误,可能往errors里增加错误信息。
Validateable validateable = (Validateable) action;
if (_log.isDebugEnabled()) {
_log.debug("Invoking validate() on action "+validateable);
}
try {
PrefixMethodInvocationUtil.invokePrefixMethod(
invocation,
new String[] { VALIDATE_PREFIX, ALT_VALIDATE_PREFIX });
}
catch(Exception e) {
e.printStackTrace();
// If any exception occurred while doing reflection, we want
// validate() to be executed
_log.warn("an exception occured while executing the prefix method", e);
}
if (alwaysInvokeValidate) {
validateable.validate();
}
}
/*
* 如果action是ValidationAware的实例,则检查action中是否包含错误信息,如果有,则返回
* INPUT的Result代码,并且整个Action就终止。
*/
if (action instanceof ValidationAware) {
ValidationAware validationAwareAction = (ValidationAware) action;
if (validationAwareAction.hasErrors()) {
if (_log.isDebugEnabled()) {
_log.debug("Errors on action "+validationAwareAction+", returning result name 'input'");
}
return Action.INPUT;
}
}
/*
* 输入合法,执行action的功能。
*/
return invocation.invoke();
}
分享到:
相关推荐
此外,WebWork 2.2强化了拦截器(Interceptor)功能。拦截器是WebWork中的一个重要概念,它可以在动作执行前后插入自定义逻辑。新版本中,拦截器的配置更加方便,可以更好地实现如权限检查、日志记录等通用功能,...
【标题】:“webWork2.2+spring+SpringMVC组合例子”是一个示例项目,展示了如何将三个经典的Java Web框架——WebWork2.2、Spring以及Spring MVC整合在一起,以构建一个完整的Web应用程序。这样的组合可以充分利用各...
学习WebWork2.2时,你可以先了解其基本架构和概念,然后通过示例项目逐步熟悉Action的编写、配置文件的配置、视图的创建以及如何利用lib库进行集成开发。实践是掌握任何框架的最好方式,所以尝试运行这个例子,逐步...
**WebWork2.2入门详解** WebWork是一个基于Java的MVC(模型-视图-控制器)框架,它为开发企业级Web应用提供了强大的支持。WebWork2.2是其一个较早但仍然广泛使用的版本,它引入了许多创新特性,如动作映射、拦截器...
webwork2.2.jar 类包 web work2
本学习笔记将深入探讨WebWork2的核心概念、主要特性以及如何在实际项目中应用。 首先,WebWork2的核心是Action,它是处理用户请求的中心组件。Action类负责接收HTTP请求,执行业务逻辑,并通过Result将处理结果返回...
webwork的包。webwork开发者不可缺少的
以上只是WebWork教程的部分内容,完整的学习笔记涵盖了更多高级主题,如Interceptor(拦截器)、Validation(验证)、I18N(国际化)、AOP支持以及与其他开源项目的集成,如G-Roller-WW和Spring等。通过深入学习和...
webwork 2.1.7 版 原版留存 xwork.jar
### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...
2. **拦截器(Interceptor)**:拦截器是WebWork的一大特色,它允许在动作执行前后插入自定义逻辑,如登录检查、事务管理等,提高了代码的复用性和模块化。 3. **模型-视图-控制器(MVC)**:WebWork遵循MVC设计...
WebWork作为一款成熟且功能丰富的Web框架,不仅提供了强大的开发工具和丰富的API,还具备良好的社区支持和广泛的第三方库集成。尽管随着时间的发展,新的框架如Spring MVC和Play Framework等逐渐崭露头角,但WebWork...
- 开始学习Webwork2时,首先需要下载对应的JAR包,例如webwork-2.2.6.2版本。 - 将下载的JAR包放入项目中的LIB目录,包括default文件夹下的所有JAR包和webwork-2.2.6.jar。 - 这些JAR包是Webwork2运行的基础,...
在这个"Webwork学习稀料"的压缩包中,我们可以找到关于Webwork的开发指南和课件,这些都是深入理解并掌握Webwork的关键资源。 首先,我们来看《Webwork开发指南》。这本书可能由夏昕等人编写,是学习Webwork的入门...
WebWork的项目资源和参考资料部分提供了学习该框架所必需的资源链接,包括官方文档、社区论坛和博客等,这些都是学习和深入了解WebWork的好途径。 总之,WebWork是一个功能强大的Java Web框架,它通过组件化和代码...
总的来说,WebWork学习培训PPT的内容涵盖了从WebWork的基本概念、MVC模式的解释、与其他框架的对比,到Action、ActionSupport、ActionContext和Interceptor的详细讲解,为学员提供了全面了解和掌握WebWork所需的理论...
`interceptor-ref name="defaultStack"`确保了默认拦截器栈的使用,这对于WebWork的正常工作至关重要。 接下来,我们谈谈FreeMarker的使用和安装: FreeMarker是一个强大的模板语言,它与Java代码分离,使得开发者...