`
gkm422
  • 浏览: 82508 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

webwork学习(一)

阅读更多

      WebWork发展到现在已经到了2.X版本,因为接触的晚,所以一开始就用上了WebWork2的版本,据说WebWork2.x+XWork1.x 的架构分离了与Servlet API的紧偶合,使系统结构更加清晰,因为工作的关系,我开始用上了WebWork2,现在就用的过程做一个总结,再把WebWork2过上一遍,以便我更深入的学习WebWork2。(本文参考了夏昕的<<Webwork2_Guide>>,以及CSDN上阿明的专栏,并非原创,只是自己写出来参考学习!)
     
在新的架构中WebWork2.x的作用是负责将用户的HTTP请求分离出来,使的请求完全的脱离Servlet API,然后将这些请求用Map的方式传入XWork1.x,且XWork1.x通过Interceptor 将Map中的数据传到我们的VO中,然后由对应的自定义Action来调用.

       首先打开DispatcherUtils.java,它在com.opensymphony.webwork.dispatcher包下面。

       找到serviceAction这个方法,它实例化了Map请求,从请求的服务中解析出对应的Action名称。
       HashMap extraContext = createContextMap(requestMap, params, session, application, request, response, context);
       OgnlValueStack stack = (OgnlValueStack) request.getAttribute(ServletActionContext.WEBWORK_VALUESTACK_KEY);
        if (stack != null) {
            extraContext.put(ActionContext.VALUE_STACK, new OgnlValueStack(stack));
        }
       try {
            String namespace = mapping.getNamespace();
            String name = mapping.getName();
            String method = mapping.getMethod();

            String id = request.getParameter("continue");
            if (id != null) {
                extraContext.put("__continue", id);
            }
       // if the ActionMapping says to go straight to a result, do it!
            if (mapping.getResult() != null) {
                Result result = mapping.getResult();
                result.execute(proxy.getInvocation());
            } else {
                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 。。。。。。。
       找到createContextMap这个方法,它遍历了HttpServletRequest,HttpSession,ServletContext中的数据,将他们复制到Map中从而内部结构与Servlet API相分离。
         public HashMap createContextMap(Map requestMap,
                                    Map parameterMap,
                                    Map sessionMap,
                                    Map applicationMap,
                                    HttpServletRequest request,
                                    HttpServletResponse response,
                                    ServletContext servletContext) {
        HashMap extraContext = new HashMap();
//存放HTTP中上传文件的request  session请求
        extraContext.put(ActionContext.PARAMETERS, new HashMap(parameterMap));
        extraContext.put(ActionContext.SESSION, sessionMap);
        extraContext.put(ActionContext.APPLICATION, applicationMap);
        extraContext.put(ActionContext.LOCALE, (locale == null) ? request.getLocale() : locale);
        extraContext.put(ActionContext.DEV_MODE, Boolean.valueOf(devMode));

        extraContext.put(WebWorkStatics.HTTP_REQUEST, request);
        extraContext.put(WebWorkStatics.HTTP_RESPONSE, response);
        extraContext.put(WebWorkStatics.SERVLET_CONTEXT, servletContext);
        extraContext.put(ComponentInterceptor.COMPONENT_MANAGER, request.getAttribute(ComponentManager.COMPONENT_MANAGER_KEY));

        // 这里用于存放HTTP中的request  session请求
        extraContext.put("request", requestMap);
        extraContext.put("session", sessionMap);
        extraContext.put("application", applicationMap);
        extraContext.put("parameters", parameterMap);

        AttributeMap attrMap = new AttributeMap(extraContext);
        extraContext.put("attr", attrMap);

        return extraContext;
    }
       创建Action,由ActionProxy来完成。
            ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy(namespace, name, extraContext);
            proxy.setMethod(method);
            request.setAttribute(ServletActionContext.WEBWORK_VALUESTACK_KEY, proxy.getInvocation().getStack());

分享到:
评论

相关推荐

    webwork中文 webwork中文参考 webwork中文资料 webwork学习资料

    对于希望深入理解MVC架构和Java Web开发的开发者来说,WebWork是一个不可多得的学习资源。 总之,WebWork不仅是一个框架,更是一套完整的解决方案,涵盖了从模型到视图的各个方面。无论是新手还是经验丰富的开发者...

    webwork学习资料

    WebWork 是一个基于Java的轻量级Web应用框架,它为开发人员提供了构建MVC(模型-视图-控制器)架构的应用程序的强大工具。在WebWork的架构中,...WebWork的学习资料将提供这些知识的详细指导,帮助初学者快速上手。

    webwork 学习 培训 ppt

    总的来说,WebWork学习培训PPT的内容涵盖了从WebWork的基本概念、MVC模式的解释、与其他框架的对比,到Action、ActionSupport、ActionContext和Interceptor的详细讲解,为学员提供了全面了解和掌握WebWork所需的理论...

    webwork学习文档和实例

    这个“webwork学习文档和实例”压缩包包含了一系列资源,可以帮助初学者或经验丰富的开发者深入理解WebWork框架的工作原理及其用法。 首先,`webwork.doc`很可能是WebWork的官方文档,其中包含了框架的核心概念、...

    webwork2个人学习总结

    Webwork2是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中提供了一种组织和管理代码的方式。以下是对Webwork2框架的学习总结: 1. **JAR包下载与项目配置**: - 开始学习Webwork2时,首先需要...

    webwork 入门学习

    本篇将围绕"WebWork入门学习"这一主题,深入讲解WebWork的核心概念、基本架构以及如何使用WebWork进行Web项目开发。 一、WebWork简介 WebWork由Apache软件基金会维护,其设计理念是通过减少样板代码和提供强大的...

    Webwork学习稀料

    在这个"Webwork学习稀料"的压缩包中,我们可以找到关于Webwork的开发指南和课件,这些都是深入理解并掌握Webwork的关键资源。 首先,我们来看《Webwork开发指南》。这本书可能由夏昕等人编写,是学习Webwork的入门...

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

    WebWork 是一个基于Java的开源MVC(Model-View-Controller)框架,它主要用于构建企业级的Web应用程序。...对于想要学习Web开发或者对WebWork感兴趣的开发者来说,这个压缩包是一个宝贵的学习资料。

    webwork学习笔记(全)

    **WebWork 学习笔记(全)** WebWork 是一个基于 Java 的开源MVC(Model-View-Controller)框架,它旨在简化企业级Web应用程序的开发。本教程将全面介绍WebWork的核心概念、架构和使用方法。 **WebWork 介绍** ...

    webWork

    通过深入学习"webWork学习文档",开发者不仅可以掌握WebWork的基本使用,还能了解其背后的架构设计,从而更好地利用这一框架来构建高效、可维护的Web应用。在实践中,不断探索和积累经验,将有助于提升个人在Java ...

    webwork教程很好的学习教程

    ### WebWork教程知识点详解 #### 一、WebWork框架简介 **WebWork**是一个由OpenSymphony组织开发的Java Web...通过本教程的学习,读者可以深入了解WebWork的核心概念和技术细节,为进一步的实际开发打下坚实的基础。

    WebWork学习资料

    这个“WebWork学习资料”压缩包显然包含了与WebWork相关的文档资源,包括.doc和.pdf两种格式,这通常意味着有详细的教程、指南、案例研究或者可能的API参考文档。 WebWork的核心特性包括: 1. **动作映射**:...

    WebWork2学习笔记

    WebWork2是一个基于Java的轻量级Web应用框架,它为开发人员提供了强大的MVC(模型-视图-控制器)架构支持,简化了Web应用程序的开发。本学习笔记将深入探讨WebWork2的核心概念、主要特性以及如何在实际项目中应用。 ...

    WebWork入门教程[创建你第一个WebWork action]

    WebWork是Java Web开发中的一个框架,它在早期与Struts有着密切的关系,后来成为了Struts2的基础。这个"WebWork入门教程[创建你第一个WebWork action]"将引导你了解如何利用WebWork来构建动态的Web应用程序。让我们...

    webwork

    WebWork 是一个基于Java的开源MVC(Model-View-Controller)框架,它在早期的Web开发中被广泛使用,特别是在构建企业级应用时。WebWork 提供了一种灵活、可扩展的方式来组织和管理Web应用程序的逻辑,使得开发者能够...

    webwork类型转换入门一

    学习WebWork的类型转换机制,开发者可以更好地控制和定制用户输入的处理,确保数据的准确性和安全性。例如,可以创建一个自定义的TypeConverter来处理日期格式,避免因用户输入不规范导致的异常。此外,对于复杂类型...

    WebWork_开发指南

    ### WebWork 开发指南知识点详解 #### 一、WebWork框架概述 ...通过上述内容的学习,开发者不仅能够掌握 WebWork 的基本使用方法,还能深入了解其核心机制和技术点,为后续的深入学习和实践打下坚实的基础。

    WebWork docs 2 -- webWork 详细的说明文档

    WebWork是一个基于Java的轻量级MVC(Model-View-Controller)框架,它为构建高性能、可维护的Web应用程序提供了强大的支持。WebWork docs 2 是一套完整的WebWork框架的详细说明文档,包含了开发者在使用WebWork时...

Global site tag (gtag.js) - Google Analytics