`
苏飞
  • 浏览: 71627 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork2.1.7源代码分析之--执行过程(草稿)

阅读更多

讲几个问题:

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 中文开发文档-小白

    WebWork-2.1.7 中文开发文档-小白

    webwork 2.1.7.jar

    2. **Interceptor**:WebWork引入了拦截器的概念,允许在Action执行前后插入自定义逻辑,如日志记录、权限检查等。拦截器链可以按需配置,提高了代码的可复用性和模块化。 3. **Object-Graph Navigation Language ...

    webwork2.1.7

    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 2.1.7 版 原版留存 xwork.jar

    webwork2.1.7+spring+hibernate+oracle整合

    WebWork是一个开源的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,简化了web应用的开发过程。WebWork 2.1.7版本是一个较为成熟的版本,提供了一系列功能强大的特性,如请求映射、类型转换、...

    webwork-2.1.7.jar

    描述: webwork-2.1.7.jar 修改: package com.opensymphony.webwork.interceptor.FileUploadInterceptor 类line88 to line 93 修复bug:upload empty file cause nullponit exception 博文链接:...

    webwork2.1.7+spring+hibernate3+oracle+weblogic8.1登录示例(详解)

    在这个示例中,我们探讨的是一个基于WebWork 2.1.7、Spring、Hibernate 3、Oracle 10和WebLogic 8.1的登录系统实现。这个系统的目的是通过输入用户名来查询数据库中对应的用户数据。以下是各个组件及其作用的详细...

    webwork-2.2.5源码包下载.txt

    1. **解压源码包**:下载完成后,首先需要解压缩zip文件,得到WebWork-2.2.5的源代码及相关文档。 2. **环境准备**:确保已经安装了Java开发工具包(JDK),推荐版本为1.5以上。此外,还需要安装Ant或其他构建工具...

    webwork in action_第1部分-WebWork简介_第2章-WebWork方式的Hello World

    webwork in action_第1部分-WebWork简介_第2章-WebWork方式的Hello World

    剖析WEBWORK源代码

    1. **添加必要的JAR包**:将webwork-2.1.7.jar、xwork-1.0.5.jar等所需库文件复制到项目的`WEB-INF\lib`目录下。 2. **配置webwork.properties文件**:创建此文件,并根据项目需求进行相应的配置。例如,默认编码...

    webwork2实例源代码

    本实例源代码提供了深入理解WebWork2工作原理和应用开发的机会。以下是对WebWork2核心知识点的详细阐述: 1. **MVC架构**:WebWork2遵循MVC模式,将应用程序逻辑、用户界面和数据模型分离,提高代码的可维护性和可...

    webwork2中文参考1.0a-pdf

    Webwork2是一个开源的在线作业系统,主要用于数学和科学教育领域。它允许教师创建和管理交互式的数学问题,学生可以在浏览器中解答这些问题,系统会自动评估答案并提供反馈。"webwork2中文参考1.0a-pdf"是针对这个...

    三框架源代码之STRUTS-2.0

    Struts 2是Java Web开发中的一个非常重要的MVC...源代码分析有助于理解框架的设计思想,以及如何根据需求定制和扩展框架功能。同时,这也是一种深度学习Java Web开发的好方法,有助于提升开发技能和解决问题的能力。

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于学习和理解WebWork的工作原理以及进行定制开发非常有帮助。 1. **MVC模式**:WebWork1.4遵循MVC架构,将应用程序分为模型、视图和控制器三...

    xwork源代码(webwork源代码,xwork source,)

    《XWork源代码详解——深度剖析WebWork框架基础》 XWork源代码是WebWork框架的核心组成部分,WebWork是一款强大的MVC(Model-View-Controller)框架,它为Java Web应用提供了一种灵活且可扩展的开发模式。XWork作为...

    webwork in action 源代码

    源代码中包含的文件反映了WebWork应用的开发环境和构建过程。例如: 1. `resin.bat`:这通常是Resin应用服务器的启动脚本,Resin是一款轻量级且高性能的Java应用服务器,常用于部署和运行Java Web应用程序。通过这...

    webwork-2.2.2和xwork1.1.3的jar包and源代码

    源代码的分析对于学习和调试这两个框架至关重要。通过阅读源码,开发者可以了解框架内部的工作流程,遇到问题时能够更快定位和解决问题。同时,这也为自定义或扩展框架功能提供了可能。 总的来说,这个压缩包中的...

    Struts2完全学习手册书中源代码第1-10章

    它继承了Struts1的优点并融合了WebWork框架的功能,提供了一种更优雅、更灵活的方式来处理web开发中的常见任务。王伟平编著的《Struts2完全学习手册》是深入理解这一框架的宝贵资源,书中通过实例代码详细阐述了...

    webwork-2.1.jar webwork相关jar包

    webwork-2.1.jar webwork相关jar包

Global site tag (gtag.js) - Google Analytics