用WebWork注册页面建立过程

开发 后端
WebWork是一个源代码开放的Web应用框架,用于简化基于Web的应用开发。本专栏介绍了WebWork注册页面的建立方法和过程,描述了如何使用WebWork和JavaServer Pages(jsp)、Velocity两种技术来建立注册界面的过程。

Web 应用程序的设计开发是复杂并且费时的。然而,你能够通过运用一种框架处理常见的Web应用程序来简化开发流程。许多开源Web应用框架能够做到这一点甚至更好一些。这些开发框架中最好的一个就是WebWork,是开源项目中OpenSymphony组的一个Web应用开发框架。

WebWork的最大优点是它的简单性和灵活性。WebWork有一个很小的API,它使开发者可以迅速进行开发工作。WebWork是许多特性和适用性的组合,包括使用variour view技术,例如JavaServer Pages(JSP),Velocity,Extensible Stylesheet Language Transformations Specification(XSLT)和JASPerReporters。WebWork拥有一个活跃的社区,有许多文章、开发者和用户。

注意:本文基于WebWork1.3.0 release candidate 2(RC2)。为了使用本文提供的例子,你需要在你的应用服务器的webapps目录下建立文件夹,将例子拷贝至新的文件夹下,同时将所需的jar文件从WebWork distribution拷贝至WEB-INF/lib目录。在此处下载WebWork和本文相关的源代码。

------
actions

WebWork的一个最重要的特色就是Action接口。WebWork actions通过在页面(视图)和商业逻辑间提供mapping来控制Web应用程序流程。在WebWork中,提交窗体到一个action URI(Uniform Resource Identifier);这个URI指向一个相应的action;action执行;用户可以前进到相应的视图。

下述class,LoginAction,是WebWork处理基于Web应用的注册窗体的例子。LoginAction扩展了ActionSupport。它是一个基类,提供了处理错误、视图映射、和许多有用的功能。

 

  1. import webwork.action.*;  
  2. public class LoginAction extends ActionSupport  
  3. {  
  4. private String userName;  
  5. private String passWord;   
  6. public String getPassword()  
  7. {    
  8. return password;    
  9. }   
  10.  public String getUserName()   
  11. {   
  12. return userName;    
  13. }   
  14. public void setPassword(String password)  
  15. {    
  16. this.password = password;    
  17. }  
  18. public void setUserName(String userName)  
  19. {    
  20. this.userName = userName;   
  21. }   
  22. public String doExecute()   
  23. {    
  24. return SUCCESS;    
  25. }    
  26. public void doValidation()   
  27. {     
  28. if (userName == null  userName.length() < 1)  
  29.  addError("UserName""Please enter username.");    
  30. if (password == null  password.length() < 1)  
  31.  addError("Password""Please enter password.");   
  32. }  

 

 LoginAction包括了两个JavaBean属性,password和username。


WebWork把数据从属性中放置到你的视图中并且自动解析送到action的参数来设置属性值。

LoginAction重载了ActionSupport的两个方法:doValidation()和doExecute()。doValidation()方法验证参数,doExecute()方法让用户前进到相应的视图。doExecute()方法返回一个字符串,如果所有的处理是成功的,返回常量success。如果有任何问题发生,在用户输入视图上返回常量input。在LoginAction的doValidation()方法中调用addError指出了一个认证问题并且让用户返回INPUT视图。

---------

view mapping

WebWork有两种方法从map到视图:通过一个Action.XML文件或者一个views.properties文件。每一种动作应该具有一个INPUT视图和一个SUCCESS视图。下述Action.xml文件定义了两个actions,loginJSP和loginVelocity。这两个action都使用了LoginAction类。如果LoginAction返回SUCCESS,这两个action使用LoginAction类并且使用户转向success.Html。如果LoginAction返回INPUT,action转向相应的INPUT视图,或者login.jsp、或者login.vm;

  1. <actions>  
  2. <action name="LoginAction" alias="loginJSP">  
  3. <view name="input">login.jsp</view>  
  4. <view name="success">success.html</view>   
  5. </action>  
  6. <action name="LoginAction" alias="loginVelocity">   
  7. <view name="input">login.vm</view>     
  8. <view name="success">success.html</view>   
  9. </action>  
  10. </actions> 

 

视图

尽管WebWork对于许多不同的视图技术提供了支持,但是最为常见的是JSP和Velociy。以下页面是两个注册页面的例子--一个使用了JSP另一个使用了Velocity。每个页面都包括了一个用户部分和一个密码部分,这两部分提交给WebWork action。

Login.jsp页面通过使用WebWork标记库来建立和处理以上两个部分,并且通过错误收集器来处理错误。webwork:textfield 和 webwork:password标记建立了text和password部分,webwork:iterator标记处理从LoginAction返回的错误。 webwork:property标记设置username,password和errors属性。

  1. <%@ taglib uri="webwork" prefix="webwork" %>  
  2. <html>  
  3. <head>  
  4. <title>WebWork JSP Example</title>  
  5. </head>  
  6. <body>    
  7. <form action="loginJSP.action" method="post">      
  8. <webwork:property>        
  9. <webwork:textfield label="'Name'" name="'userName'"/>        
  10. <webwork:password label="'Password'" name="'password'"/>      
  11. </webwork:property>      
  12. <input type="submit" value="Submit"/>    
  13. </form>    
  14. <webwork:iterator value="errors">      
  15. <br><webwork:property/>    
  16. </webwork:iterator>    
  17. </body>  
  18. </html> 

 

login.vm页面使用了Velocity模板语言来建立域并且处理错误。

在Velocity中,$符号表明了一个参考。!符号告诉Velocity如果参考为空,那么什么都不显示。#符号表示了一个指令。在下述例子中,$!userName和$!password表明参考引用了LoginAction中的username和password;#foreach在错误处理属性中指示了循环。

  1. <html>  
  2. <head>   
  3. <title>WebWork Velocity Example</title>  
  4. </head>    
  5. <body>    
  6. <form action="loginVelocity.action" method="post">  
  7. <input type="text" name="userName" value="$!userName"/>      
  8. <input type="text" name="password" value="$!password"/>      
  9. <input type="submit" value="Submit"/>    
  10. </form>    
  11. #foreach ($error in $errors)  
  12. <br>$error    
  13. #end    
  14. </body>  
  15. </html> 

 

开始工作!

WebWork是一个易用的、灵活的、功能强大的开源Web应用框架,本文介绍了它的基本功能。访问OpenSympony的网站去学习并且下载最新版本的WebWork。你下载完WebWork后,到Jakarta的网站的上部去寻找Velocity,一种简单、快速的开源引擎,它是你在网页中使用JSP的另一个选择。
-----------------
作者介绍

Erik Swenson 是Open Source Software Solutions的顾问和建立者。他主要研究使用开源软件和组件来进行java开发。此外,他参与开发了开源项目JasperEdit和OpenReports。
------------------
资源

下载本文相关的源代码

http://www.javaworld.com/javaworld/jw-03-2003/opensource/jw-0307-opensourceprofile.zip

从OpenSymphony网站下载WebWork:

http://www.opensymphony.com/webwork/

Velocity 是Apache Jakarta项目的一部分,从以下地址下载:

http://jakarta.apache.org/velocity/index.html

“使用Velocity模板引擎” Geir Magnusson Jr. (JavaWorld,  2001年12月):

http://www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity.html

其他开源Web应用框架包括:

Maverick:

http://mav.sourceforge.net/

Struts:

http://jakarta.apache.org/struts/index.html

JasperReports homepage:

http://jasperreports.sourceforge.net/

【编辑推荐】

  1. WebWork注入Servlet方法详解
  2. WebWork中返回INPUT的原因
  3. WebWork如何实现文件上传配置过程
  4. 通过WebWork实现HelloWorld
  5. WebWork与Spring+Hibernate的整合
责任编辑:冰荷 来源: gz183
相关推荐

2012-03-26 09:31:57

InstagramAndroid

2009-07-08 09:29:58

WebWork

2009-07-16 14:08:14

webwork配置

2009-07-14 15:52:00

WebWork文件下载

2009-07-14 16:08:41

WebWork学习

2009-07-14 17:34:53

Webwork配置

2009-07-16 16:01:54

WebWork敏捷开发

2009-07-08 09:55:51

WebWork下载

2009-07-08 10:11:30

WebWork

2009-07-14 14:04:36

WebWork框架

2009-07-08 10:30:57

WebWork

2009-07-16 16:51:56

WebWork验证机制

2009-07-16 16:08:30

WebWork Act

2010-09-06 13:57:38

2010-09-14 10:36:23

sql server存

2009-07-16 16:27:26

Struts WebW

2009-07-14 14:41:33

Webwork与Spr

2009-07-14 17:20:31

Webwork文件上传

2009-07-14 01:00:43

WebWorkActionConte

2009-07-16 14:58:03

WebWork安装WebWork配置
点赞
收藏

51CTO技术栈公众号