WebWork是一个开放源代码Web应用框架。目的在于简化Web应用开发。这一栏目介绍了WebWork,并且解释了使用WebWork和两个不同的视图技术,JavaServerPages(JSP)和Velocity,进行的登录网页的创建过程。
Web应用程序和开发是复杂和费时的。但是,你能使用一个框架处理普通的Web应用程序开发任务,从而简化该过程。几种开放源代码Web应用程序框架能做这个而且做得更多。最好的一个是WebWork,一个来自于开放源代码项目的OpenSymphony组的Web应用程序框架。
WebWork最大的优势是它的简单和灵活。WebWork有一个小型的API。该API允许开发者立即启动和运行。WebWork提供许多属性和灵活的综合性能,包括:使用不同的视图技术,如JavaServerPages(JSP)、Velocity、可扩展性单语言转换说明(XSLT)、和 JasperReports,的功能。
注意:本文是在WebWork 1.3.0发布的备选本2的基础之上的。为了运行提供的例子,你需要建立一个文件夹在你的应用程序服务器的webapps目录下,将例子复制到新文件夹中,并且从WebWork分布上复制需要的jar文件到WEB-INF/lib目录下。从Resources下载WebWork和本文所需的源代码。
Action
在WebWork中最重要的特征之一就是Action接口。WebWork Action提供在页面(或者视图)和企业逻辑之间的映射,从而控制一个Web应用程序的流程。在WebWork中,表单提交到一个Action URI(同一资源标记符);URI映射到一个相应的Action;执行该Action;这样用户前进到了恰当的视图。
接下来的类,LoginAction,是一个在基于Web的应用程序中处理登录表单的WebWork Action的例子。LoginAction由扩展ActionSupport而来,一个提供错误处理、视图映射和许多其它的有用的功能的基类:
|
LoginAction包含两个JavaBean属性,password 和username. WebWork将从这些属性中取出数据,将你所需要的数据放进到你的视图中;并可以自动的解释任何参数,送到Action中设置属性值。
LoginAction使用两个来自ActionSupport的函数:doValidation()和doExecute()。 doValidation()函数验证参数的合法性,并且由doExecute()函数带动用户向前到恰当的视图。doExecute()函数返回一个字符串,如果处理成功的话,该字符串为常量SUCCESS;有问题的话,该字符串为常量INPUT,将用户送回到INPUT视图,并且在 LoginAction中的doValidation()函数调用addError,表示出现了一个非法参数问题并将用户返回到INPUT视图。
视图映射
WebWork ACION用两种方法映射到视图:通过一个Action.xml文件或者一个views.properties文件。每个ACION应该有一个INPUT 视图和一个SUCCESS视图。接下来的Action.xml文件定义了两个actions:loginJSP和loginVelocity。两个动作都使用LoginAction类,如果LoginAction返回SUCCESS的话,则带用户前进到success.html。如果 LoginAction返回INPUT,动作带用户前进到相应的INPUT视图,该动作要么是login.jsp,要么是login.vm:
|
视图
WebWork为许多不同视图技术提供支持,最通用的使JSP和Velocity。下面的页是两个登录页例子——一个用JSP创建,另一个用Velocity创建。每页包含一个带有提交给一个WebWork动作的用户名和密码字段的表单。
login.jsp页使用WebWork标记库,创建和迭代了两个字段,并且通过收集错误重复迭代。webwork:textfield和 webwork:password标记创建了文本和密码域,并且webwork:iterator标记重复迭代任何从LoginAction返回的错误。 webwork:property标记设置了username、password和errors属性:
|
login.vm页使用Velocity临时语言增加域并且迭代所有错误。在Velocity中,$符号表示一个引用;!符号告诉Velocity如果引用为空的话,什么都不显示;#符号表示一个指令。在接下来的例子中,$!userName和$!password访问LoginAction的 userName和password属性;# foreach指令通过errors属性循环:
|
WebWork是一个简单的、灵活的、强大的开放源代码Web应用程序框架。本文介绍了基本的WebWork功能。访问OpenSympony站点了解更多的指示,并且下载更新的WebWork版本。当你下载完了以后,进入到Jakarta站点看一看Velocity,一个简单的、快速开放源代码临时引擎,它可是你的网页中JSP的备选项。
【关于作者】
Erik Swenson是Open Source Software Solutions的顾问和创始人。他精通使用开放源代码软件和组件进行Java开发,而且,他开发了JasperEdit和OpenReports开放源代码项目。