WebWork/JSP/Velocity建立登入頁面

來源:互聯網
上載者:User
WebWork/JSP/Velocity建立登入頁面
作者:Erik Swenson,陳姣姣 翻譯 發文時間:2003.06.26 20:32:48
概述

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><B>馬上行動</b>

WebWork是一個簡單的、靈活的、強大的開放原始碼Web應用程式架構。本文介紹了基本的WebWork功能。訪問OpenSympony網站瞭解更多的指示,並且下載更新的WebWork版本。當你下載完了以後,進入到Jakarta網站看一看Velocity,一個簡單的、快速開放原始碼臨時引擎,它可是你的網頁中JSP的備選項。

【關於作者】

Erik Swenson是Open Source Software Solutions的顧問和創始人。他精通使用開放原始碼軟體和組件進行Java開發,而且,他開發了JasperEdit和OpenReports開放原始碼項目。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.