`
vv_1024
  • 浏览: 111693 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

WebWork2 --- HelloWorld

阅读更多
本周三利用空余的时间把医院HIV月报构建在了Struts2框架上,真的很简单,代码量比 Struts1.x 少了一半。

WebWork 创始人 Reckard Oberg 在构建 WebWork 原始版本的时候说:“框架的强大之处不在于它能让你做什么,而是你没必要做什么。”

Struts2 抛弃了原先 Struts 的原始框架,构建在 xwork 之上。Struts2继承了WebWork2 清爽的架构及代码编写风格。

下面就开始 WebWork2 之旅吧,感受一下代码编写是多么的简单和清晰。

从http://www.opensymphony.com/webwork下载最新的完整的开源包并解压。
新建 Web Project。
把 xwork.jar common-logging.jar oscore.jar velocity-dep.jar ognl.jar webwork-2.2.4.jar 复制到WEB-INF/lib目录下,修改web.xml文件内容如下:
xml 代码
 
  1. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  2. "http://java.sun.com/dtd/web-app_2_3.dtd">  
  3. <web-app>  
  4.     <filter>  
  5.         <filter-name>webwork</filter-name>  
  6.         <filter-class>  
  7.             com.opensymphony.webwork.dispatcher.FilterDispatcher  
  8.         </filter-class>  
  9.     </filter>  
  10.     <filter-mapping>  
  11.         <filter-name>webwork</filter-name>  
  12.         <url-pattern>/*</url-pattern>  
  13.     </filter-mapping>  
  14.     <taglib>  
  15.         <taglib-uri>webwork</taglib-uri>  
  16.         <taglib-location>  
  17.             /WEB-INF/lib/webwork-2.2.4.jar  
  18.         </taglib-location>  
  19.     </taglib>  
  20. </web-app>  


新建action: HelloWorld.java
实现 Action 接口,并且必须实现 execute() 方法
java 代码
 
  1. package org.vv.action;  
  2. import com.opensymphony.xwork.Action;  
  3. public class HelloWorld implements Action {  
  4.     private String message;  
  5.     private String name;  
  6.     public String getName() {  
  7.         return name;  
  8.     }  
  9.     public void setName(String name) {  
  10.         this.name = name;  
  11.     }  
  12.     public String execute() throws Exception {  
  13.         if (name == null || "".equals(name) || "World".equals(name)) {  
  14.             message = "Blank names or names of 'World' are not allowed!";  
  15.             return INPUT;  
  16.         }  
  17.         message = "Hello, " + name + "!\n";  
  18.         message += "The time is:\n";  
  19.         message += System.currentTimeMillis();  
  20.         return SUCCESS;  
  21.     }  
  22.     public String getMessage() {  
  23.         return message;  
  24.     }  
  25. }  


在classes目录下新建xwork.xml文件,最终内容如下:
xml 代码
 
  1. <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN"
  2. "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">  
  3. <xwork>  
  4.     <include file="webwork-default.xml" />  
  5.     <package name="default" extends="webwork-default">  
  6.         <default-interceptor-ref name="completeStack" />  
  7.         <action name="helloWorld" class="org.vv.action.HelloWorld">  
  8.             <result name="success">hello.jsp</result>  
  9.             <result name="input">name.jsp</result>  
  10.         </action>  
  11.     </package>  
  12. </xwork>  


新建 name.jsp 页面文件,内容如下:
jsp 代码
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <%@ taglib prefix="ww" uri="webwork"%>  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <head>  
  6.         <title></title>  
  7.     </head>  
  8.     <body>  
  9.         <ww:if test="message!=null">  
  10.             <font color="red"> <ww:property value="message" /> </font>  
  11.         </ww:if>  
  12.         Please enter your name:  
  13.         <form action="helloWorld.action">  
  14.             <input type="textfield" name="name"  
  15.                 value="<ww:property value="name"/>" />  
  16.             <input type="submit">  
  17.         </form>  
  18.     </body>  
  19. </html>  


新建 hello.jsp 页面文件,内容如下:
jsp 代码
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <%@ taglib prefix="ww" uri="webwork"%>  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <head>  
  6.         <title></title>  
  7.     </head>  
  8.     <body>  
  9.         The message generated by my first action is:  
  10.         <ww:property value="message" />  
  11.     </body>  
  12. </html>  

注意:<ww:property value="message" /> 中的 message 得到的是 HelloWorld 中getMessage()方法的返回值,而非 message 属性。

ok,5个短小的文件,构成了一个轻量级的应用。在实际应用中,一般是继承ActionSupport 类,通过addFieldError("name",String)来达到验证效果。
上面的代码只需修改两个地方。
HelloWorld.java类:
java 代码
 
  1. public class HelloWorld extends ActionSupport {  
  2.     ……  
  3.     public String execute(){  
  4.        if(……)  
  5.           addFieldError("name","Blank names or names of 'World' are not allowed!")  
  6.        ……  
  7.     }  
  8.     ……  
  9. }  

name.jsp更改:
jsp 代码
 
  1. <ww:if test="message!=null">  
  2.     <font color="red">  
  3.         <ww:property value="fieldErrors['name']" />  
  4.     </font>  
  5. </ww:if>  

----------------------------------------
和 Struts2 一样WebWork2 的 UI 标签库极大地简化了JSP页面,name.jsp最终更改为:
jsp 代码
 
  1. <ww:form action="helloWorld">  
  2.     <ww:textfield label="Please enter your name:" name="name" />  
  3.     <input type="submit" />  
  4. </ww:form>  

ww:textfield已经包含了错误信息了。
  • webwork2.rar (4 MB)
  • 描述: WebWork2 --- HelloWorld 参考《WebWork in Action》
  • 下载次数: 87
分享到:
评论
1 楼 bat_xie 2007-12-18  
为什么我运行你的程序直接运行helloWorld.action
抛出如下的错误
007-12-18 14:56:06 com.opensymphony.webwork.dispatcher.DispatcherUtils serviceAction
严重: Could not execute action
java.lang.NullPointerException
at com.opensymphony.xwork.DefaultActionProxy.<init>(DefaultActionProxy.java:57)
at com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)
at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:216)

相关推荐

    WebWork2.2.7-helloWorld终于实验成功

    NULL 博文链接:https://goowolf.iteye.com/blog/507075

    WebWork-2.1.7 中文开发文档-小白

    WebWork-2.1.7 中文开发文档-小白

    WebWork教程-0.90版

    安装WebWork前,需先从官方网站下载最新版本的WebWork压缩包,解压后可获得关键文件和目录,包括webwork-2.x.jar(主库)、webwork-example.war(示例应用)、webwork-migration.jar(迁移工具)等,以及docs(文档...

    WebWork教程-0.90版.pdf

    2. **查看文件结构**:解压后的文件夹通常包含`webwork-2.x.jar`(主库)、`webwork-example.war`(示例应用)、`webwork-migration.jar`(迁移工具)等文件以及`docs`和`lib`目录。 3. **搭建开发环境**:确保安装...

    怎么用WebWork来实现HelloWorld.docx

    本文将详细介绍如何使用WebWork来实现一个基础的"HelloWorld"示例,这对于初学者来说是一个很好的起点。 首先,你需要准备一个运行环境,比如已经安装并配置好的Tomcat服务器。接着,你需要从网上下载WebWork的最新...

    webwork in action_第1部分-WebWork简介_第2章-WebWork方式的Hello World

    webwork in action_第1部分-WebWork简介_第2章-WebWork方式的Hello World

    Hello World the WebWork way

    - 通过上述步骤,我们创建了一个简单的WebWork应用程序,当用户访问`http://localhost/helloWorld.action`时,服务器将调用`HelloWorld`类中的`execute()`方法,构造一条消息,并将该消息展示在结果页面上。 - 这...

    webwork之HelloWorld篇

    "webwork之HelloWorld篇"是入门WebWork框架的一个基本教程,通常包括创建一个简单的Web应用程序并展示“Hello, World!”的输出。 在Eclipse中创建一个Hello Web工程,首先你需要安装必要的插件,如JSTL和MyEclipse...

    webWork2.26 的helloWorld 例子

    通过这个简单的“HelloWorld”例子,你可以学习到WebWork的基本架构和工作流程,这对于进一步学习WebWork乃至Struts2等其他MVC框架都是非常有帮助的。此外,理解Action、配置文件、拦截器等概念,对于任何Java Web...

    WebWork入门例子 HelloWorld

    这个“WebWork入门例子 HelloWorld”是为初学者准备的一个简单教程,旨在帮助他们快速理解WebWork框架的基本概念和工作原理。 WebWork的核心特性包括动作映射、数据绑定、拦截器、异常处理和强大的视图渲染。它通过...

    webwork_helloworld

    "webwork_helloworld"项目是为初学者准备的一个基础示例,旨在帮助理解WebWork框架的基本工作原理和用法。在这个项目中,你可能会遇到一些问题,这些问题可能是配置错误、代码不正确或运行时环境设置不当导致的。 ...

    Webwork Web开发框架

    压缩包内通常包含`webwork-2.x.jar`、示例应用`webwork-example.war`、迁移工具`webwork-migration.jar`以及文档和源码目录。 - **运行环境准备**:WebWork需要部署在Web容器中运行,如Tomcat。确保已安装并配置好...

    Webwork2开发指南

    从简单的"Hello, World!"程序到复杂的业务场景,逐步引导读者理解Webwork2的工作原理和最佳实践。 总的来说,Webwork2 是一个强大且灵活的Web开发框架,通过理解其核心概念和特性,开发者可以构建出高效、可维护的...

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    第1章 Struts 2概述,第2章 Struts 2下的HelloWorld,第3章 Struts 2基础,第4章 深入Struts 2,第5章 Struts 2的类型转换,第6章 文件的上传和下载.,第7章 Struts 2的拦截器,第8章 Struts 2的输入校验,9.2 ...

    WebWork教程开发资料

    **WebWork安装-HelloWorld** 在开始WebWork的开发之前,首先需要进行WebWork的安装。这通常包括下载WebWork的JAR文件并将其添加到项目的类路径中,配置web.xml以启动WebWork的前端控制器。然后,创建一个简单的...

    [教學 - 入門篇] WebWork 2

    `HelloWorld.java`是Action类,它继承自`ActionSupport`,并实现了一个返回"Hello World!"的`execute()`方法。`hello.jsp`是视图页面,使用WebWork的标签库`ww`来显示结果。 ```java // HelloWorld.java package ...

    webwork详细讲解.doc

    #### HelloWorld示例 为了更好地理解WebWork的使用方式,我们可以通过一个简单的“Hello World”示例来进行实践: 1. **创建Action**:定义一个Action类,例如`HelloAction`,并实现相应的业务逻辑方法。 2. **...

Global site tag (gtag.js) - Google Analytics