亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

快速開發web程序:用WebWork、JSP、Velocity建立注冊頁面

2019-11-18 16:25:24
字體:
來源:轉載
供稿:網友
摘要
    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("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">
    <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的另一個選擇。
-----------------
作者介紹

   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

“使用Velocity模板引擎” 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/

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情久久久| 日韩av电影免费观看高清| 91在线视频成人| 2019中文字幕免费视频| 黑人狂躁日本妞一区二区三区| 欧美午夜宅男影院在线观看| 欧美电影在线免费观看网站| 亚洲国产精品一区二区三区| 国产精品极品美女粉嫩高清在线| 91av福利视频| 欧美成人精品在线观看| 91免费欧美精品| 亚洲码在线观看| 日本精品视频在线| 亚洲精品女av网站| 92国产精品久久久久首页| 国产69精品久久久久9999| 国产69精品久久久久9999| 亚洲日本中文字幕| 日韩a**中文字幕| 欧美在线观看网站| 中文国产亚洲喷潮| 亚洲精品久久久一区二区三区| 成人乱人伦精品视频在线观看| 欧美xxxx18性欧美| 国产成人在线一区| 欧美情侣性视频| 亚洲韩国日本中文字幕| 国产丝袜精品第一页| 日韩精品视频三区| 中文字幕在线精品| 国产精品久久久久av免费| 国产精品成久久久久三级| 亚洲精品网址在线观看| 91麻豆国产精品| 亚洲精品女av网站| 亚洲国产三级网| 欧美日韩福利电影| 97国产成人精品视频| 精品久久久一区二区| 亚洲欧美一区二区三区情侣bbw| 日韩亚洲欧美中文在线| 欧美另类xxx| 亚洲国产精品视频在线观看| 91香蕉嫩草神马影院在线观看| 中文字幕9999| 欧洲精品毛片网站| 亚洲国产成人爱av在线播放| 欧美日韩国产精品一区二区三区四区| 欧美成年人视频网站欧美| 在线电影欧美日韩一区二区私密| 久久免费少妇高潮久久精品99| 精品女厕一区二区三区| 国产亚洲精品高潮| 国产精品自产拍高潮在线观看| 中文综合在线观看| 大伊人狠狠躁夜夜躁av一区| 国产一区二区视频在线观看| 亚洲精品久久久久久久久久久久| 懂色av中文一区二区三区天美| 亚洲情综合五月天| 国产精品精品国产| 久久香蕉国产线看观看网| 中文字幕久热精品视频在线| 亚洲系列中文字幕| 亚洲国产精彩中文乱码av在线播放| 国产一区二区丝袜高跟鞋图片| 精品中文字幕视频| 成人免费视频97| 国产精品精品国产| 91精品国产高清自在线| 福利一区视频在线观看| 在线成人激情视频| 孩xxxx性bbbb欧美| 成人免费网站在线观看| 97色在线观看免费视频| 国产精品美女午夜av| 日韩人体视频一二区| 免费91在线视频| 伊人久久久久久久久久久久久| 久久综合久久八八| 欧美成人激情图片网| 亚州成人av在线| 这里只有视频精品| 国产精品视频内| 亚洲欧洲日本专区| 日韩高清a**址| 国产精品入口尤物| 日韩在线视频播放| 夜夜躁日日躁狠狠久久88av| 日韩成人在线视频网站| 精品久久久久久久中文字幕| 国产69久久精品成人看| 欧美色videos| 国产一区深夜福利| 欧美大尺度激情区在线播放| 91精品啪在线观看麻豆免费| 亚洲国产成人精品久久久国产成人一区| 国产精品91久久久久久| 日韩久久免费视频| 超碰精品一区二区三区乱码| 91亚洲午夜在线| 九九热r在线视频精品| 国产精品毛片a∨一区二区三区|国| 国产精品扒开腿做爽爽爽的视频| 久久亚洲精品中文字幕冲田杏梨| 日韩乱码在线视频| 国产精品一区二区三区成人| 亚洲开心激情网| 国产欧美精品日韩精品| 欧洲成人在线观看| 日韩中文字幕国产精品| 中文字幕日韩精品有码视频| 久久国产精品视频| 色视频www在线播放国产成人| 欧美性jizz18性欧美| 欧美成人激情视频| 欧美亚洲一区在线| 国产精品久久久久久久久免费看| 91九色精品视频| 日韩精品福利在线| 久久亚洲国产成人| 精品亚洲永久免费精品| 国产成人精品一区二区在线| 狠狠躁夜夜躁人人躁婷婷91| 国产亚洲视频中文字幕视频| 国产精品无码专区在线观看| 欧美性xxxx极品hd欧美风情| 亚洲精品中文字幕女同| 粉嫩av一区二区三区免费野| 欧美日韩国产va另类| 亚洲美女喷白浆| 日韩成人性视频| 136fldh精品导航福利| 色哟哟亚洲精品一区二区| 色综合天天狠天天透天天伊人| 4438全国亚洲精品在线观看视频| 亚洲国产另类 国产精品国产免费| 色综合影院在线| 97激碰免费视频| 欧美激情视频网址| 亚洲欧美www| 欧美色欧美亚洲高清在线视频| 色99之美女主播在线视频| 国产精品96久久久久久又黄又硬| 中文字幕亚洲欧美日韩2019| 日韩免费精品视频| 国产一区二区三区视频在线观看| 欧美日韩综合视频网址| 国产日韩欧美中文在线播放| 亚洲精品国产成人| 色播久久人人爽人人爽人人片视av| 日韩欧美有码在线| 久久精品免费电影| 亚洲天堂网站在线观看视频| 伊人久久大香线蕉av一区二区| 欧美激情视频网| 精品中文字幕久久久久久| 日本伊人精品一区二区三区介绍| 亚洲少妇中文在线| 色天天综合狠狠色| 91精品久久久久久久久| 日韩av在线网站| 国产亚洲在线播放|