`

关注WebWork(一)

阅读更多
        大约一年前,我为一个小型项目选择框架的时候,WebWork第一次进入了我的视野,它优美的设计以及强大的功能,再配以平缓的学习曲线深深打动了我。在一番比较过后,我毫不犹豫地选择了WebWork并用它顺利完成了这个项目,并且在开发过程中写了不少总结性的文章。尽管WebWork有着这样那样的优势,但是它本身仍然存在着诸多的不足,社区不够活跃,更新速度太慢,最糟糕的就是文档太少且质量参差不齐,这些因素都使得WebWork并没有如期待那样流行,而我写的文章也鲜有人浏览就是明证。去年在写完了深入探索WebWork系列最后一篇之后,我就把WebWork暂时放到了一边。
        时光飞逝,一年过去了,WebWork就在我不经意间悄悄地发展,从我最初使用的2.1.2到2.1.7再到现在2.2beta,而我写的《WebWork初体验》也悄无声息地爬上了阅读量的排行榜,扣除有关股票的那篇Post不计,这篇文章已经成为了技术方面最受关注的文章。在最近我也不时收到一些朋友给我发来的mail询问有关WebWork的问题,这也让我点受宠若惊。这个曾经让我如此心动的框架再次闯入了我的IT生活,牵动着我的心。随着WebWork2.2beta的发布,随着大家对WebWork关注程度的提高,随着《WebWork in Action》的出版,随着......我想是时候重新扬帆,为推广这个从过去到现在都让我赞叹的框架出一点点力了。而我最先想到的自然就是翻译《WebWork in Action》。
    《WebWork in Action》是一本翘首企盼了很久的书,它的分量之重自然不需要多言了。我来翻译这样一本书,确实有点高攀了,但这是一本值得细细品味的书,翻译则是一个很好的驱动力,促使自己更加专注的研读每一段,每一字句。至于翻译的文字能否面世,则需要看机会了,但不管怎么样,我一定会完成这样一项工作,哪怕我的文字艰深晦涩,无人喝彩,我也会敝帚自珍,将这些译文好好收藏。呵呵~~~    
        好了,说了那么多废话,也该说说正题了。经过一个星期的努力,终于把该书的第一章给翻译完毕了,鉴于版权的问题,我不能把这些文字公布出来让大家扔鸡蛋,但是我仍然想说说自己在看完并译完第一章之后所得到的启发。
        第一章是对WebWork的概述。在讲述WebWork的特性之前,作者花了相当的篇幅对MVC的作用以及发展做了介绍。通过这些介绍,你可以了解到MVC的产生是为了解决GUI应用程序中存在的紧耦合问题。这里的紧耦合是指域对象逻辑与显示逻辑之间的紧密耦合,为了能够将业务逻辑从显示层面的代码中剥离出来,MVC模式派上了极大的用场。然而这样一个具有历史意义的模式并不能直接应用到Web环境中,因为HTTP并不是有状态的连接协议,而Web应用程序都被抽象成了Request/Response形式。因此稍作改变的MVC才能很好地为Web应用程序所用,这变化的MVC通常有两种——Front Controller与Page Controller。对于这两个名词,很多朋友应该都不会陌生了,很多流行的J2EE框架使用的就是前者,而ASP.NET则是后者的拥趸。首先,Front Controller的出现是因为在Web环境下,View并不是一个可以独立更新的对象,而是一个由请求引发其本身render的画面,因此,在经典的MVC中Model与View直接通信的情况就不复存在了。取而代之的是Controller与View通信,而View则通过Request Dispatcher来匹配不同的Controller,由Controller更新Model,再由Controller返回一个值,根据不同的返回值render不同的View,同时Controller将需要显示的数据Push至View中。而Page Controller则经典MVC模式进化的另外一种方式。与Front Controller相比,Page Controller在结构上则要简单得多,并不存在Request Dispatcher这个部分。大家可以发现,在ASP.NET中,Browser请求的是.aspx资源,而一个.aspx则与一个Page类的派生类对应,其中可能包含了OnLoad, OnRender以及响应Control事件的自定义方法,由这些方法中的某一个来完成View的render工作,这个由Page类派生出来的子类就是Page Controller。Page Controller模式在解耦合方面不算称职,但是它的开发效率极高,在Visual Studio这类开发工具的支持下尤为突出。这两种模式各有优势,而WebWork对它们都提供了良好的支持,给开发者留下了可选择的空间。
       在讲完了MVC之后,作者又对Framework和Container作了深入的阐述和比较。偶认为这一节的文字是第一章最为精彩,且最有价值的。文中引用了WebWork缔造者Rickard Oberg的妙语对框架做出解释:A framework's power comes not from what it allows, but from what it does not allow. Framework强调的是限制,其中有组织结构的限制,也有Flow的限制。这样的限制可能减少了你大展拳脚的机会,却会给你的应用程序带来清晰的脉络结构,更加重要的是可以使得一个团队进行协作开发,开发效率得到提高,软件的规模也会随之扩大。这就是框架所带来的巨大作用。与Framework相反,Container则不是专注在限制,其目的是提供一个环境来装载特定的对象,并增强这些对象的功能性,同时又不影响对象之间的独立性。Servlet Container和EJB Container,还有很hot的Inversion of Control Container都具有这样的特性。WebWork是两者的组合体,除了提供框架之外,还为开发人员提供一个Lightweight Container。在第一章剩下的篇幅里,作者还回顾了WebWork的发展史并展望了未来。嗯,未来真的很诱人。
        好了,对第一章的感受就讲到这里了,但愿各位也能够随我一起关注WebWork吧!
分享到:
评论

相关推荐

    webwork_框架文档

    虽然现在Spring MVC和Struts 2等框架更受关注,但WebWork的许多设计理念和技术仍对现代Web开发有着深远的影响。通过深入研究WebWork,开发者可以了解到早期MVC框架的设计思想,同时也能提升自己的Java Web开发技能。

    webwork

    WebWork框架尤其以其在Jive Forum中的应用而闻名,后者是一款流行的论坛软件,其源代码的深入研究甚至引发了技术社区的广泛关注。 ### WebWork2的演变与架构 WebWork框架经历了从紧耦合设计向模块化设计的重大转变...

    WebWork教程

    在WebWork框架的使用过程中,开发者需要关注其配置文件xwork.xml,它定义了Action的映射规则以及应用的配置信息。正确配置xwork.xml文件对于框架的正常运行是至关重要的。 WebWork的项目资源和参考资料部分提供了...

    webwork入门(添加注释)

    WebWork 是一个基于Java的轻量级MVC(Model-View-Controller)框架,它提供了一种优雅的方式来构建Web应用程序,强调代码的可维护性和可扩展性。本教程旨在帮助初学者理解WebWork的工作原理,并通过实例深入学习其...

    java私塾][Spring讲解+webwork2整合+webwork2整合全套

    面向切面编程是一种编程范式,主要用来解决软件开发中的“横切关注点”问题,比如事务管理、日志记录等。在Spring中,AOP是通过代理模式实现的,可以通过声明式或基于注解的方式来定义切面。 ### WebWork2框架介绍 ...

    webwork学习资料

    在WebWork的架构中,开发者可以更专注于业务逻辑,而不用过多地关注底层的HTTP请求处理和页面渲染。以下是WebWork的一些核心概念和功能的详细说明: 1. **WebWork介绍** WebWork最初由OpenSymphony团队开发,后...

    webwork2.0 运行所需的包

    WebWork2.0是一款基于Java的轻量级MVC(模型-视图-控制器)...正确配置这些依赖关系对于WebWork2.0的顺利运行至关重要,它们共同构成了WebWork2.0的运行环境,使得开发者可以专注于业务逻辑,而无需关注底层的细节。

    webwork中上传文件

    在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...

    webwork in action

    - **UI组件**:第十一章关注于如何使用WebWork提供的UI组件来简化前端开发过程,提高用户体验。 #### 五、高级主题 - **类型转换**:第十二章介绍了WebWork中的类型转换机制,帮助开发者处理表单提交的不同数据...

    spring和webwork包

    WebWork则是另一个基于Action的MVC框架,它的设计理念是通过减少样板代码来提高开发者效率,后来WebWork发展成为Struts2。 Spring框架的核心特点包括: 1. **依赖注入**:通过XML配置或注解方式,Spring可以帮助...

    Spring+hibernat+webwork2整合例子

    在这个例子中,我们关注的是将Spring、Hibernate和WebWork2这三个强大的框架整合在一起。这三者分别是Spring作为应用的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,Hibernate作为ORM...

    Webwork+spring+hibernate集成实例

    AOP则提供了一种处理横切关注点(如日志、事务管理)的方式,使得代码更整洁。Spring还提供了对数据库事务的管理,通过声明式事务处理,开发者无需在业务代码中显式处理事务,提高了代码的可读性和可维护性。 ...

    webwork2.1 spring

    7. **视图解析**:虽然WebWork主要关注控制器层,但通过Spring,可以方便地集成各种视图技术,如JSP、FreeMarker、Velocity等。 通过整合WebWork2.1和Spring,开发者可以获得一个既具备WebWork强大动作处理能力,又...

    webwork+spring+hibernate 开发资料

    Spring可以通过其Action代理来管理和控制WebWork的动作,同时Spring的AOP特性可以用于处理如日志记录、事务管理等跨切面关注点。 Spring与Hibernate的整合则主要体现在数据访问层。Spring提供了HibernateTemplate或...

    spring+hibernate+webwork相关配置

    标题 "spring+hibernate+webwork相关配置" 指的是一个集成开发环境的配置,其中涵盖了三个关键的技术框架:Spring、Hibernate和WebWork。这些框架在Java Web开发中非常常见,主要用于实现依赖注入、持久化管理和MVC...

    WebWork.Spring.Hibernate整合开发网络书城

    WebWork是早期的一个流行MVC(Model-View-Controller)框架,它为开发者提供了强大的动作映射和事件处理机制,使得业务逻辑与表现层的分离更加清晰。WebWork的主要优点在于它的灵活性和可扩展性,通过拦截器...

    webwork+spring+ibatis简单实例

    在IT行业中,Web开发是一个广泛讨论的话题,而`webwork`、`spring`和`ibatis`是构建高效、灵活的Web应用的三大组件。这个"webwork+spring+ibatis简单实例"提供了如何整合这三个框架来创建一个功能完整的应用程序的...

    WebWork2 开发指南

    6. AOP(面向切面编程):WebWork2结合XWork框架,提供了AOP支持,可以定义拦截器来处理如日志、事务管理等横切关注点。 7. 动态方法调用:WebWork2允许动态调用动作方法,增强了代码的灵活性。 8. 支持AJAX:...

Global site tag (gtag.js) - Google Analytics