新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Java/Eclipse 』 → 用WebWork、JSP、Velocity建立注册页面 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4977 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 用WebWork、JSP、Velocity建立注册页面 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     npuhetao 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      头衔:骨灰级菜鸟
      等级:大二(研究C++)
      文章:230
      积分:2708
      门派:XML.ORG.CN
      注册:2004/3/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给npuhetao发送一个短消息 把npuhetao加入好友 查看npuhetao的个人资料 搜索npuhetao在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看npuhetao的博客楼主
    发贴心情 用WebWork、JSP、Velocity建立注册页面

    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的另一个选择。
    -----------------
      作者介绍

      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/


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    你硬要把单纯的事情看得很严重,那样子你会很痛苦。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/14 13:45:00
     
     julian_wong 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:12
      积分:100
      门派:XML.ORG.CN
      注册:2005/3/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给julian_wong发送一个短消息 把julian_wong加入好友 查看julian_wong的个人资料 搜索julian_wong在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看julian_wong的博客2
    发贴心情 
    收到
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/20 11:57:00
     
     julian_wong 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:12
      积分:100
      门派:XML.ORG.CN
      注册:2005/3/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给julian_wong发送一个短消息 把julian_wong加入好友 查看julian_wong的个人资料 搜索julian_wong在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看julian_wong的博客3
    发贴心情 
    哪个比较好呢?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/20 12:09:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/9/16 2:16:34

    本主题贴数3,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    3,264.648ms