`
vv_1024
  • 浏览: 110526 次
  • 性别: 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安装与HelloWorld WebWork的安装过程通常包括以下几个步骤: - **下载WebWork框架**:从官方或第三方网站获取WebWork的jar包。 - **配置Web应用**:在Web应用的`WEB-INF/web.xml`中配置WebWork的过滤器和...

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

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

    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框架的基本工作原理和用法。在这个项目中,你可能会遇到一些问题,这些问题可能是配置错误、代码不正确或运行时环境设置不当导致的。 ...

    Hello World the WebWork way

    Hello World the WebWork way!

    怎么用WebWork来实现HelloWorld.docx

    怎么用WebWork来实现HelloWord.docx 内容详细讲了一个初学者搭建WEBWORK实现HELLOWORLD的过程。 自己摸索的,在GOOGLE上找很多方法,可能人家都是高手写的,总是有一两个点调试不过去。 这个可以用。 适合初学者……

    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入门(添加注释)

    "HelloWorld"是一个常见的示例,用于验证WebWork环境是否正确设置。在完成这些步骤后,可以通过访问特定URL来触发这个动作,显示“Hello, World!”的欢迎信息。 **Action(动作)** Action是WebWork的核心组件,它...

    webwork开发文档 struts2学习助手

    通过这个HelloWorld示例,开发者可以更好地了解WebWork2如何接收请求、执行业务逻辑以及展示结果,从而为更深入的学习和实际项目开发奠定基础。WebWork与Struts的相似之处在于Action的使用和配置方式,使得从Struts...

    webwork2.0 webwork2.0 帮助文档

    ### WebWork 安装 - HelloWorld 安装WebWork 2.0通常涉及以下步骤: 1. 获取WebWork库,可以通过Maven或直接下载JAR文件。 2. 配置`web.xml`文件,将WebWork的Servlets和过滤器添加到Web应用配置中。 3. 创建基本的`...

    webwork教程

    4. 创建一个简单的HelloWorld Action,继承自WebWork的基础Action类,并实现一个执行方法。 在HelloWorld示例中,你将创建一个简单的Action类,其中包含一个名为execute的方法,该方法返回一个字符串结果,这个结果...

    webwork教程(经典)

    **二、WebWork安装 - HelloWorld** WebWork的安装通常包括以下步骤: 1. **添加依赖**:将WebWork的JAR文件添加到项目的类路径中。 2. **配置web.xml**:在Web应用的配置文件中,添加WebWork的过滤器和监听器。 3....

    webwork学习资料

    创建一个简单的`HelloWorld`Action,你需要定义一个Java类,继承自WebWork的基础Action类,比如`com.opensymphony.xwork2.ActionSupport`,并实现一个返回字符串结果的方法。例如: ```java public class ...

Global site tag (gtag.js) - Google Analytics