讲几个问题:
1. ActionProxy是因为想做一个代理。使得action可以成为一个webservice或soap对象。
2.ActionProxy里有ActionInvocation对象,而ActionInvocation里也有ActionProxy。这很有趣。
3.当一个Action有一组Intecerpter里,它的调用ActionInvocation非常有意思。Intercerpter里注入调用者自己。这里有一个ArroundIntercepter的递归调用,非常有意思:
//invoke interceptors
if (interceptors.hasNext()) {
Interceptor interceptor = (Interceptor) interceptors.next();
resultCode = interceptor.intercept(this);
} else {
resultCode = invokeAction(getAction(), proxy.getConfig());
}
//AroundInterceptor
public String intercept(ActionInvocation invocation) throws Exception {
String result = null;
before(invocation);
result = invocation.invoke();
after(invocation, result);
return result;
}
4.执行过程对异常信息处理的过程。事实上,
//sended error.
try {
ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy(namespace, actionName, extraContext);
request.setAttribute(ServletActionContext.WEBWORK_VALUESTACK_KEY, proxy.getInvocation().getStack());
proxy.execute();
// If there was a previous value stack then set it back onto the request
if (stack != null){
request.setAttribute(ServletActionContext.WEBWORK_VALUESTACK_KEY,stack);
}
} catch (ConfigurationException e) {
log.error("Could not find action", e);
sendError(request, response, HttpServletResponse.SC_NOT_FOUND, e);
} catch (Exception e) {
log.error("Could not execute action", e);
sendError(request, response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
}
// set to request.
try {
// send a http error response to use the servlet defined error handler
// make the exception availible to the web.xml defined error page
request.setAttribute("javax.servlet.error.exception", e);
// for compatibility
request.setAttribute("javax.servlet.jsp.jspException", e);
// send the error response
response.sendError(code, e.getMessage());
} catch (IOException e1) {
}
5。为什么在web多线程环境下,每个请求的request不会相互冲突?
public class ActionContext {
//~ Static fields/initializers /////////////////////////////////////////////
static ThreadLocal actionContext = new ActionContextThreadLocal();
因为sevlectActionContext继承自ActionContext,而ActionContext有一个静态变量 static ThreadLocal actionContext = new ActionContextThreadLocal()。需要了解为什么,它能保证线程变量安程。因为ThreadLocal就能保证。
分享到:
相关推荐
WebWork-2.1.7 中文开发文档-小白
2. **Interceptor**:WebWork引入了拦截器的概念,允许在Action执行前后插入自定义逻辑,如日志记录、权限检查等。拦截器链可以按需配置,提高了代码的可复用性和模块化。 3. **Object-Graph Navigation Language ...
2. **webwork-2.1.7.jar**:WebWork的核心库文件,包含了框架的所有核心组件和功能。 3. **webwork-migration.jar**:可能包含帮助迁移其他框架到WebWork的相关工具或类库。 4. **webflow-2.1.7.jar**:Spring Web...
webwork 2.1.7 版 原版留存 xwork.jar
WebWork是一个开源的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,简化了web应用的开发过程。WebWork 2.1.7版本是一个较为成熟的版本,提供了一系列功能强大的特性,如请求映射、类型转换、...
描述: webwork-2.1.7.jar 修改: package com.opensymphony.webwork.interceptor.FileUploadInterceptor 类line88 to line 93 修复bug:upload empty file cause nullponit exception 博文链接:...
在这个示例中,我们探讨的是一个基于WebWork 2.1.7、Spring、Hibernate 3、Oracle 10和WebLogic 8.1的登录系统实现。这个系统的目的是通过输入用户名来查询数据库中对应的用户数据。以下是各个组件及其作用的详细...
1. **解压源码包**:下载完成后,首先需要解压缩zip文件,得到WebWork-2.2.5的源代码及相关文档。 2. **环境准备**:确保已经安装了Java开发工具包(JDK),推荐版本为1.5以上。此外,还需要安装Ant或其他构建工具...
webwork in action_第1部分-WebWork简介_第2章-WebWork方式的Hello World
1. **添加必要的JAR包**:将webwork-2.1.7.jar、xwork-1.0.5.jar等所需库文件复制到项目的`WEB-INF\lib`目录下。 2. **配置webwork.properties文件**:创建此文件,并根据项目需求进行相应的配置。例如,默认编码...
本实例源代码提供了深入理解WebWork2工作原理和应用开发的机会。以下是对WebWork2核心知识点的详细阐述: 1. **MVC架构**:WebWork2遵循MVC模式,将应用程序逻辑、用户界面和数据模型分离,提高代码的可维护性和可...
Webwork2是一个开源的在线作业系统,主要用于数学和科学教育领域。它允许教师创建和管理交互式的数学问题,学生可以在浏览器中解答这些问题,系统会自动评估答案并提供反馈。"webwork2中文参考1.0a-pdf"是针对这个...
Struts 2是Java Web开发中的一个非常重要的MVC...源代码分析有助于理解框架的设计思想,以及如何根据需求定制和扩展框架功能。同时,这也是一种深度学习Java Web开发的好方法,有助于提升开发技能和解决问题的能力。
在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于学习和理解WebWork的工作原理以及进行定制开发非常有帮助。 1. **MVC模式**:WebWork1.4遵循MVC架构,将应用程序分为模型、视图和控制器三...
《XWork源代码详解——深度剖析WebWork框架基础》 XWork源代码是WebWork框架的核心组成部分,WebWork是一款强大的MVC(Model-View-Controller)框架,它为Java Web应用提供了一种灵活且可扩展的开发模式。XWork作为...
源代码中包含的文件反映了WebWork应用的开发环境和构建过程。例如: 1. `resin.bat`:这通常是Resin应用服务器的启动脚本,Resin是一款轻量级且高性能的Java应用服务器,常用于部署和运行Java Web应用程序。通过这...
源代码的分析对于学习和调试这两个框架至关重要。通过阅读源码,开发者可以了解框架内部的工作流程,遇到问题时能够更快定位和解决问题。同时,这也为自定义或扩展框架功能提供了可能。 总的来说,这个压缩包中的...
它继承了Struts1的优点并融合了WebWork框架的功能,提供了一种更优雅、更灵活的方式来处理web开发中的常见任务。王伟平编著的《Struts2完全学习手册》是深入理解这一框架的宝贵资源,书中通过实例代码详细阐述了...
webwork-2.1.jar webwork相关jar包