选择显示字体大小

快速开发web程序:用webwork、jsp、velocity建立注册页面


摘要
    webwork是一个源代码开放的web应用框架,用于简化基于web的应用开发。本专栏介绍了webwork并且描述了如何使用webwork和javaserver pages(jsp)、velocity两种技术来建立注册界面的过程。(1000字;2003年3月7日)

---------
    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。它是一个基类,提供了处理错误、视图映射、和许多有用的功能。

import webwork.action.*;

public class loginaction extends actionsupport
{
  private string username;
  private string password;

  public string getpassword()
  {
    return password;
  }

  public string getusername()
  {
    return username;
  }

  public void setpassword(string password)
  {
    this.password = password;
  }

  public void setusername(string username)
  {
    this.username = username;
  }

  public string doexecute()
  {
    return success;
  }

  public void dovalidation()
  {
    if (username == null username.length() < 1) adderror(&quot;username&quot;, &quot;please enter username.&quot;);
    if (password == null password.length() < 1) adderror(&quot;password&quot;, &quot;please enter password.&quot;);
  }
}


    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;


<actions>

  <action name=&quot;loginaction&quot; alias=&quot;loginjsp&quot;>
    <view name=&quot;input&quot;>login.jsp</view>
    <view name=&quot;success&quot;>success.html</view>
  </action>

  <action name=&quot;loginaction&quot; alias=&quot;loginvelocity&quot;>
    <view name=&quot;input&quot;>login.vm</view>
    <view name=&quot;success&quot;>success.html</view>
  </action>

</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属性。


<%@ taglib uri=&quot;webwork&quot; prefix=&quot;webwork&quot; %>

<html>

  <head>
    <title>webwork jsp example</title>
  </head>

  <body>

  <form action=&quot;loginjsp.action&quot; method=&quot;post&quot;>

    <webwork:property>
      <webwork:textfield label=&quot;'name'&quot; name=&quot;'username'&quot;/>
      <webwork:password label=&quot;'password'&quot; name=&quot;'password'&quot;/>
    </webwork:property>

    <input type=&quot;submit&quot; value=&quot;submit&quot;/>
  </form>

  <webwork:iterator value=&quot;errors&quot;>
    <br><webwork:property/>
  </webwork:iterator>

  </body>
</html>


    login.vm页面使用了velocity模板语言来建立域并且处理错误。在velocity中,$符号表明了一个参考。!符号告诉velocity如果参考为空,那么什么都不显示。#符号表示了一个指令。在下述例子中,$!username和$!password表明参考引用了loginaction中的username和password;#foreach在错误处理属性中指示了循环。

<html>

  <head>
    <title>webwork velocity example</title>
  </head>

  <body>

  <form action=&quot;loginvelocity.action&quot; method=&quot;post&quot;>
    <input type=&quot;text&quot; name=&quot;username&quot; value=&quot;$!username&quot;/>
    <input type=&quot;text&quot; name=&quot;password&quot; value=&quot;$!password&quot;/>
    <input type=&quot;submit&quot; value=&quot;submit&quot;/>
  </form>

  #foreach ($error in $errors)
<br>$error
  #end

  </body>

</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

&ldquo;使用velocity模板引擎&rdquo; 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/

点击参与讨论这篇文章
matrix经javaworld授权翻译
您可以点击-dodo查看翻译作者的详细信息.
加入matrix,与java共舞: www.matrix.org.cn


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons