一个使用snap的Web应用

类别:Java 点击:0 评论:0 推荐:
一个使用snap的Web应用

用WebWork, JSP, 和 Velocity建立一个登录页面

概述

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

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("UserName", "Please enter username.");
    if (password == null || password.length() < 1) addError("Password", "Please enter password.");
  }
}

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:

<actions>

  <action name="LoginAction" alias="loginJSP">
    <view name="input">login.jsp</view>
    <view name="success">success.html</view>
  </action>

  <action name="LoginAction" alias="loginVelocity">
    <view name="input">login.vm</view>
    <view name="success">success.html</view>
  </action>

</actions>

视图

    WebWork为许多不同视图技术提供支持,最通用的使JSP和Velocity。下面的页是两个登录页例子——一个用JSP创建,另一个用Velocity创建。每页包含一个带有提交给一个WebWork动作的用户名和密码字段的表单。

   login.jsp页使用WebWork标记库,创建和迭代了两个字段,并且通过收集错误重复迭代。webwork:textfield和webwork:password标记创建了文本和密码域,并且webwork:iterator标记重复迭代任何从LoginAction返回的错误。webwork:property标记设置了username、password和errors属性:

<%@ taglib uri="webwork" prefix="webwork" %>

<html>

  <head>
    <title>WebWork JSP Example</title>
  </head>

  <body>

  <form action="loginJSP.action" method="post">

    <webwork:property>
      <webwork:textfield label="'Name'" name="'userName'"/>
      <webwork:password label="'Password'" name="'password'"/>
    </webwork:property>

    <input type="submit" value="Submit"/>
  </form>

  <webwork:iterator value="errors">
    <br><webwork:property/>
  </webwork:iterator>

  </body>

</html>

login.vm页使用Velocity临时语言增加域并且迭代所有错误。在Velocity中,$符号表示一个引用;!符号告诉Velocity如果引用为空的话,什么都不显示;#符号表示一个指令。在接下来的例子中,$!userName和$!password访问LoginAction的userName和password属性;# foreach指令通过errors属性循环:

    <html>

  <head>
    <title>WebWork Velocity Example</title>
  </head>

  <body>

  <form action="loginVelocity.action" method="post">
    <input type="text" name="userName" value="$!userName"/>
    <input type="text" name="password" value="$!password"/>
    <input type="submit" value="Submit"/>
  </form>

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

  </body>

</html>

马上行动

WebWork是一个简单的、灵活的、强大的开放源代码Web应用程序框架。本文介绍了基本的WebWork功能。访问OpenSympony站点了解更多的指示,并且下载更新的WebWork版本。当你下载完了以后,进入到Jakarta站点看一看Velocity,一个简单的、快速开放源代码临时引擎,它可是你的网页中JSP的备选项。

关于作者

Erik Swenson是Open Source Software Solutions的顾问和创始人。他精通使用开放源代码软件和组件进行Java开发,而且,他开发了JasperEdit和OpenReports开放源代码项目。

本文地址:http://com.8s8s.com/it/it17788.htm