`
canonical
  • 浏览: 364592 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[导入]jsplet与webwork的概念对比

阅读更多
jsp本身提供的是一个有限状态机模型(FSM),Web访问模型直接体现了这一点: action?XXXX。
action对应于方法名,XXX是方法的参数。在这个访问模型中没有指出状态存储在什么地方,因为它假设后台是一个整体,构成一个巨大的状态集。
但 这种模型注定是过分简化的,所以会有很多的发展。发展的方向就是逐渐精细化,识别出相关的部分,把它们组织到一起。其实可以从各个框架的开发过程来看出这 种演化的过程。 Struts最早只有一个全局配置文件,现在多了一个模块的概念。WebWork是在Struts之后设计的,提供了一个所谓的package的概念,将 一堆action和interceptor组织到一起,其设计中package的extends属性看上去是不是有点眼熟。概念多了就要分模块,这一点在 面向对象之前就存在了,也符合Struts的发展历程,只是WebWork的这个extends不再是简单的模块概念了,而是一种面向对象的设计,只是 WebWork中没有实现型与名的分离,每个action名对应唯一的一个action,所以package也可以看作是一种完全静态的对象,只有一个实 例,不是吗? 我们可以做一个对应,包的namespace大概可以对应于Jsplet中的objectScope, 包名大概可以对应于Jsplet中的objectType, action对应于objectEvent, 差别在于objectScope是完全动态的,并参与Web对象管理,而package的namespace被创造出来之后只起了一个名字区别作用, Webwork的后续发展会不会在这一点上再做些文章?
再看另外一个地方。前台页面显示需要从模型中拿到数据,那模型对象是怎么管理的, Jsp本身提供了几个管理策略application, session, request, page, 几个action需要共享状态信息怎么办?状态与行为的相关就是对象化了。Webwork2没有提供对象化的手段,不知道一般人是怎么做的,将所有相关操 作都塞在一个Action里,然后通过一个扩展参数映射? 还是都从session中存取模型对象? session中的对象是不是越来越多,有没有人来管一管?

jsplet的核心是objectManager, 它利用objectFactory来创建对象,利用objectName来管理WebObject,这是与网络无关的, 这里管理的对象也不一定需要响应Web事件。
对 象如果需要响应事件, 实现IEventListener接口,在缺省实现中, Jsplet用了EventManager来管理objectEvent的响应,大致相当于xwork的工作,只是EventManager是个帮助对 象,由WebObject自己决定是否使用,而且它是每个WebObject自己使用自己的EventManager, 而不是系统全局只有唯一的一个EventManager。

整个objectManager层面都是网络无关的,当然可以单元测试。 WebEngine最终实现objectManager与web环境的关联,只是它使用了拉模式。特别是在视图jsp中调用WebEngine, 其最重要的作用是将thisObj这个变量注入到jsp模型中。this指针其实体现了对象化的很重要的特点:使用局部名而不是全局名称。
其实XWork本身也是可以脱离Web环境应用的,特别是它可以脱离View来使用,这是它的扩展性的一个来源。

在Webwork 中有一种叫做Model Driven的概念,使用Model Driven之后在OGNL表达中就可以直接使用model的属性和方法。在jsplet使用我们自己的tpl模板引擎, 其中token解析策略是thisObj的属性和方法可以直接使用,也可以通过thisObj.xx来访问,这就如同this指针的用法。


再次声明,我无意将jsplet与其它框架在实际使用效果上作对比,所分析的只是Framework整体的概念模型。数据绑定,参数和状态校验等与应用相关的功能在我们的框架中都是有着完整的解决方案的,目前不打算讨论这些。
分享到:
评论

相关推荐

    spring与webwork框架集成

    WebWork2.1 与 Spring 框架的集成是一个常见的技术实践,目的是利用 Spring 提供的依赖注入(DI)和面向切面编程(AOP)能力,以及 WebWork 的优秀动作层管理,来构建更加灵活和解耦的Java Web应用。在集成过程中,...

    webwork应用

    WebWork通过ActionSupport、Interceptor、ValueStack等概念提供强大的功能,如类型安全的参数绑定、异常处理、AOP(面向切面编程)支持等。同时,它还允许开发者使用OGNL(Object-Graph Navigation Language)进行...

    struts2与webwork2

    在探讨Struts2与WebWork2的联系与区别的过程中,我们不得不提到它们的历史渊源以及在Java Web开发领域中的地位。Struts2框架实际上可以视为WebWork2框架的继承者,两者之间的关系紧密而复杂,下面将从多个角度深入...

    使用webwork上传excel并导入数据库

    本话题聚焦于如何利用WebWork来处理Excel文件的上传,并将其数据导入到MySQL数据库中。这通常涉及到前端用户界面的设计、后端服务器的处理逻辑以及数据库操作。 首先,我们需要在前端创建一个表单,允许用户选择并...

    spring与webwork的集成

    Spring 和 WebWork 的集成是将 Spring 框架的依赖注入和管理能力与 WebWork(现在是 Struts 2 的一部分)的 MVC 框架相结合的过程。这种集成允许开发者利用 Spring 提供的服务,如数据访问对象(DAO)、业务服务以及...

    WebWork2.0讲解说明

    五、WebWork2.0与其他框架的对比 相比于Struts1,WebWork2.0提供了更优的性能和更灵活的设计。虽然后来WebWork与Struts合并成Struts2,但WebWork2.0的理念和技术仍在Struts2中得到体现。与Spring MVC相比,WebWork...

    webwork

    3. **拦截器(Interceptor)**:WebWork引入了拦截器的概念,允许在动作执行前后插入自定义逻辑,比如验证、事务管理等,增强了框架的灵活性和可扩展性。 4. **异常处理**:WebWork提供了一套完善的异常处理机制,...

    webwork与spring集成

    ### WebWork与Spring集成:深度解析与实践指南 在企业级应用开发中,框架的集成是提高代码可维护性、扩展性和复用性的关键。WebWork框架与Spring框架的集成便是一个典型示例,它结合了WebWork在MVC架构方面的优势与...

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

    1. **WebWork基础**:WebWork的核心概念,如Action、Interceptors(拦截器)、Results和Parameters等,以及它们如何协同工作来实现业务逻辑和视图呈现的分离。理解这些基础概念是掌握WebWork的关键。 2. **MVC模式*...

    webWork

    下面,我们将详细介绍WebWork的核心概念、主要功能以及如何通过学习文档来提升开发技能。 一、WebWork概述 WebWork是由Apache软件基金会维护的一个项目,它提供了一种轻量级、高性能的方式来构建动态Web应用。...

    Webwork教程

    本文档主要介绍了WebWork的基本概念、与其它框架的比较以及如何在不同版本之间进行升级等内容。 #### 二、WebWork与Struts的关系 1. **定义:** - **WebWork**:最初由OpenSymphony团队开发,后来被Apache软件...

    Webwork2开发指南

    本指南将深入探讨Webwork2的核心概念、配置、以及实际开发中的应用。 **1. Webwork2 架构概述** Webwork2 的架构基于MVC设计模式,旨在分离业务逻辑、视图展示和用户交互。模型(Model)层负责处理数据和业务逻辑,...

    WebWork 与 FreeMarker整合开发培训指南

    WebWork与FreeMarker整合开发是Java Web开发中的一个重要实践,这两种技术结合可以提供高效且灵活的MVC(Model-View-Controller)框架解决方案。WebWork是一个轻量级的Web应用程序框架,它处理业务逻辑和控制流程,...

    WEBWORK

    在 WebWork 中,配置是至关重要的,因为它定义了框架如何工作以及如何与应用交互。以下是 WebWork 配置的一些核心方面: 1. **web.xml** 文件:这是每个 Java Web 应用的标准部署描述符,用于配置Servlet过滤器和...

    webwork教程

    - WebWork可以轻松地与其他流行的开源项目集成,例如Spring、Hibernate和Xml-RPC等。 - 这些集成可以帮助开发者构建更为复杂的应用程序。 #### 六、总结与附录 - **总结**: - 本文档全面介绍了WebWork的核心...

    webwork源码底层实现

    2. **Action Mapping**:WebWork的核心是Action Mapping,它定义了URL与特定Action类之间的映射关系。`webwork-default.xml`是配置文件,其中包含了这些映射信息,允许开发者自定义请求路径和处理方法。 3. **请求...

    webwork_框架文档

    `Interceptor`是WebWork中的另一个关键概念,它允许在Action执行前后插入自定义逻辑,例如验证、日志记录、性能监控等。 WebWork的类型转换功能是其一大亮点,它可以自动将HTTP请求参数转换为Action类的属性类型,...

    webwork教程webwork教程webwork教程

    本教程仅覆盖了WebWork的基本概念和入门知识,实战G-Roller-WW和WebWork与其他开源项目集成的部分尚未涉及。如果你想进一步学习WebWork,可以通过提供的邮箱地址联系作者获取更多资料。同时,请尊重版权,不要未经...

    webwork的jar包

    WebWork与Spring的集成可以让开发者利用Spring的强大功能,如服务定位和安全性,同时保持WebWork的MVC架构。 Hibernate,则是Java领域的一个持久化框架,它简化了数据库操作,通过对象关系映射(ORM)使开发者能够...

Global site tag (gtag.js) - Google Analytics