<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用WebWork、JSP、Velocity創建注冊頁面

      [摘要]WebWork是一個源代碼開放的Web應用框架,用于簡化基于Web的應用開發。本專欄介紹了WebWork并且描述了如何使用WebWork和JavaServer Pages(JSP)、Velocity兩種技術來建立注冊界面的過程。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">
          <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/

      Matrix經javaworld授權翻譯.加入matrix,與java共舞: www.matrix.org.cn(出處:PConline)


      日韩精品一区二区三区高清