用WebWork、JSP、Velocity建立註冊頁面

來源:互聯網
上載者:User
js|web|頁面 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。它是一個基類,提供了處理錯誤、視圖映射、和許多有用的功能。

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。在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="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和Velociy。以下頁面是兩個註冊頁面的例子--一個使用了JSP另一個使用了Velocity。每個頁面都包括了一個使用者部分和一個密碼部分,這兩部分提交給WebWork action。

  Login.jsp頁面通過使用WebWork標記庫來建立和處理以上兩個部分,並且通過錯誤收集器來處理錯誤。webwork:textfield 和 webwork:password標記建立了text和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"gt;
<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="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應用程式框架,本文介紹了它的準系統。訪問OpenSympony的網站去學習並且下載最新版本的WebWork。你下載完WebWork後,到Jakarta的網站的上部去尋找Velocity,一種簡單、快速的開源引擎,它是你在網頁中使用JSP的另一個選擇。
----


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.