WebWork 2 : 什么是WebWork
本页由casey最后修改于2004年12月24日.
欢迎使用WebWork!WebWork是一个强大的基于Web的MVC框架, 它构建在一个命令模式框架XWork之上. WebWork的特性包括用于处理或代理请求的分发器(Dispatcher), 支持多种视图技术(JSP, Velocity, JasperReports, XML, FreeMarker)的结果类型, 一个小而强大的JSP标签库和Velocity宏定义. 分发器调用XWork活动来访问和操作模型(Model)并为视图显示模型数据提供方便的途径. WebWork真正的优势在于它强调简洁和协作能力的根本理念. 使用WebWork将有助于最小化代码并允许开发人员更多的关注业务逻辑(business logic)和建模(modeling)而不是诸如编写Servlet之类的事情.特性
背景与目的WebWork是一个开放源代码项目, 目标是为在短时间内构建复杂网站提供易于理解和维护的工具及开发框架. Java是一个平台以及基于该平台的语言, 尽管他支持although it supports many others as the language in which systems are built, such as JavaScript and XML. WebWork在构架上基于最佳实践和那些已被证实有价值的设计模式. 它还基于一个强烈的动机: 尽可能的简单, 并具有维护上的灵活性(这实际上是一个困难的平衡).它也鼓励用户使用恰当的, 符合需要的方式工作. [It also encourages you, as a user, to do things the way you seem fit for your needs.] WebWork能以多种方式配置和使用, 哪种方式更适合于你依赖于使用环境. 下面是一个例子, WebWork支持多种不同的HTML生成技术如JSP, Velocity模版引擎和XSLT. 它们之间在理念上和技术上都存在很大的差别, 但都能为WebWork所用, 同时, 不同的用户确实需要这些不同的方式. "你不能那么做"是我们尽可能避免的一句话, 而"我们不能"往往是因为有另一个更好, 更适合的工具. WebWork对MVC Model-1和Model-2的支持Web应用开发框架的最重要的一个任务是支持逻辑, 内容, 表现相分离的理念. 如果没有做到这一点, 通常会导致维护上的问题, 如果开发团队结构复杂(因为每一个团队成员通常只负责应用的某一方面(aspect)), 还会使应用的开发变得更加困难. 达到分离目的的一般方法是采用MVC(Model-View-Controller)设计模式. 该模式鼓励使用分离的代码来处理模型(model, 即"业务逻辑"), 控制器(controller, 即"应用逻辑")和视图(view). 这样分离之后, 下一个问题是: 控制器的代码与表现部分如何交互. 有两种常用的设计模型可以做到这一点, 它们分别被称为Model-1和Model-2. 这两种模型将在下文描述. Model-1Model-1方式的基本想法是在表示层(presentation layer)如JSP或模版中调用控制器代码. 如果你正在使用JSP, 这意味着你可以通过两种方式执行你的WebWork活动: 使用"webwork:action"标签调用执行; 或使用"webwork:bean"标签像调用JavaBeans一样执行活动. Model-2在Model-2方式中, 哪些代码调用控制器以及哪些视图进行展示由第三方决定, 通常是一个servlet分发器. 分发器解码HTTP请求中的URL, 然后决定执行哪些代码. 一个包含控制器代码的Java对象被获取并执行, 从而完成对某个应用逻辑和业务逻辑的处理. 当执行结束后, 分发器将请求转交(forward)给一个视图处理器(如一个JSP), 它使用前一个处理的数据绘制结果视图. 如何选择使用?由于控制器逻辑与表现生成完全解藕, 使得根据执行情况来显示不同结果页面成为可能. 例如, 如果处理出现错误就可以显示一个错误页面而不显示正常的结果页面. Model-1方式的优点如下.
Model-2方式的优点如下.
选择使用的首要原则是: 当代码仅仅是获取并显示数据(这被称为read-type code)时使用Model-1, 只要当模型是由活动或一个处理流程所改变时就应当使用Model-2. |
![]() |
Document generated by Confluence on Dec 14, 2004 16:37 |