国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

快速創建Webapp

2019-11-18 16:25:39
字體:
來源:轉載
供稿:網友
快速創建web app
-使用WebWork, jsp, 和Velocity創建一個登錄頁面


原文鏈接:http://www.javaworld.com/javaworld/jw-03-2003/jw-0307-opensourcePRofile.Html?

前言

WebWork是一個開源的Web應用程序架構,它可以簡化Web應用的部署。我在這篇文章中將會向大家介紹WebWork的知識,其中會結合WebWork創建一個“登錄頁面”。附帶的還會介紹其他兩個不同的技術,JSP和Velocity。
作者 Erik Swenson
譯者注:文中括號中的注釋有些是我自己的理解,有些是因為翻譯過程中直譯過來覺得不太妥帖所以把原文也寫了下來方便讀者自己理解。有翻譯的不對的地方或有什么技術上的問題可以發郵件給我,希望我的工作能夠帶給你幫助:)mail:wafd2003@yahoo.com.cn

Web應用程序的設計和部署非常麻煩而起耗費時間。不過,現在你可以通過使用一個“架構”來處理公共的Web應用部署任務以達到簡化開發過程的目的。有很多的開源架構都可以做到這一點甚至能向你提供比更多的功能。其中最好的大概要數WebWork了,它是來自OpenSymphony 組織的一個開源項目。

WebWork最大的好處是他的簡單易用。WebWork只有很少的API,開發人員可以很快的掌握它們。它提供了一個擴展性極好的集合,其中包括幾種十分好用的頁面顯示技術比如JSP,Velocity,XSLT和JasperReports。WebWork 項目有一群活躍的支持者他們中有開發人員,設計人員還有直接的用戶。

注意:這篇文章所講的是基于WebWork 1.3.0發布版。要想運行本文提供的例子,你需要在你的應用服務器創建一個webapp目錄(如果是weblogic直接使用DefaultApp目錄就可以了)然后把例子代碼拷貝到這個目錄下,再把運行程序所需要的.jar文件拷貝到WEB-INF/lib目錄下。你可以從本文提供的資源鏈接中找到WebWork的下載地址。

動作(actions)
WebWork 中一個最重要的特性是Action接口。WebWork 的“動作”(actions)通過頁面(或視圖)與業務邏輯之間提供的映射關系來控制Web應用程序的流程。在WebWork中,forms(相當于html中的Form)被提交給一個action URI(相當于html中form的action) ;URI會映射一個相應的action;然后action會執行;接下來用戶會鏈接到相應的頁面。
下面的類,LoginAction是一個WebWork 動作(action)的例子,它處理web應用程序的登錄窗體(form)。LoginAction 繼承了ActionSupport,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()方法返回一個String,如果所有的處理都沒有問題的話通常這個String是一個常量“SUCCESS”,或者,如果處理過程出現問題的話這個String就是一個常量INPUT使用戶返回到INPUT頁面(就是你進入的那個頁面)。在doValidation()方法中的addError方法是在出現問題的時候向用戶顯示錯誤并返回的INPUT頁面。

頁面映射(view mapping)

WebWork 的動作(actions)映射到頁面(views)有兩個途徑:一個是通過Action.xml文件另一個是通過views.properties文件。每一個動作(actions)應該有一個INPUT頁面(views)何以個SUCCESS頁面(views)。下面的Action.xml文件定義了兩個動作(actions),loginJSP和loginVelocity。兩個動作(actions)使用同一個類LoginAction并且如果LoginAction返回SECCESS就把用戶指向到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>
頁面(views)

盡管WebWork提供了對多種不同的顯示技術的支持,但是多數情況下使用的是JSP和Velocity。下面是兩種顯示頁面的例子一個使用JSP另一個使用了Velocity。每個頁面都包含一個form,這個form中包含username和password字段,它們被提交給一個WebWork的action.

login.jsp頁面使用WebWork標記庫來創建和描述兩個字段,通過一個錯誤(errors)集合來迭代。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中,$ 符號代表一個引用;!標記代表如果引用是null就什么也不顯示;#標記代表一個命令。在下面的例子中,$!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 的更多的知識和下載WebWork 的最新版本。下載WebWork 之后再到Jakarta 站點查找Velocity的內容,Velocity是一個簡單,快速的開源的模板引擎,他可以作為你的web頁面中處JSP之外另一個很好的選擇。

關于作者

Erik Swenson是Open Source Software Solutions開源組織的顧問和創始人。Swenson 專注與使用開源軟件和組件來進行Java的部署。此外,他還開發了JaperEdit和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, December 2001):
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 主頁:
http://jasperreports.sourceforge.net
"使用JasperReports簡單的實現報表功能," Erik Swenson (JavaWorld, September 2002):
http://www.javaworld.com/javaworld/jw-09-2002/jw-0920-opensourceprofile.html
查閱有關Erik Swenson的更多的開源羨慕:
http://www.javaworld.com/columns/jw-opensource-index.shtml
訪問JavaWorld有關部署工具的討論主題:
http://www.javaworld.com/channel_content/jw-tools-index.shtml
訪問JavaWorld有關JSP的討論主題::
http://www.javaworld.com/channel_content/jw-jsp-index.shtml
到 JavaWorld 論壇中討論:
http://forums.devworld.com/webx?13@@.ee6b802
訂閱JavaWorld's 每周的免費郵件信息:
http://www.javaworld.com/subscribe
你將在 IDG.net看到更多的有關IT技術的文章。進入討論組討論。

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 重庆市| 多伦县| 玛纳斯县| 松原市| 永靖县| 丁青县| 佳木斯市| 平舆县| 互助| 宁夏| 西华县| 临颍县| 临清市| 高邮市| 大安市| 库伦旗| 琼结县| 介休市| 宿州市| 富蕴县| 罗山县| 临邑县| 青州市| 望谟县| 鲁山县| 平南县| 什邡市| 景泰县| 长阳| 祁门县| 合肥市| 富民县| 阿勒泰市| 中卫市| 栾城县| 广南县| 宜兰县| 蚌埠市| 西乌珠穆沁旗| 新建县| 客服|