`
joshokn
  • 浏览: 103382 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

A helloWorld in webWork[旧作迁移]

阅读更多
[注:这篇文章只是作者在学习webwork时的一点感触,由于作者也是初学者,若有不妥之处还请见谅!若有兴趣,希望可以与您一起讨论学习经验。]

在开始介绍webwork 之前,有必要先了解一下它的历史
WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目,如下示意图所示:
                          |-----WebWork2               }web
WebWork1-------|
                          |-----XWork 1                }NonWeb

Xwork简洁、灵活功能强大,它是一霰曜嫉?/span >Command模式实现,并且完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。

WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用JSP, Velocity, FreeMarker, JasperReports,XML等。

下面以webWork tutorial 开始介绍

首先要有你的web容器,可以下载一个tomcat然后部署一下你的应用,具体做法已经在前面的文章里面有介绍。

三个不可缺少的文件:“WEB-INF/web.xml”“WEB-INF/classes/xwork.xml”“WEB-INF/classes/validators.xml”。

下面介绍Actions机制
Create a JSP page that will call the action;
Create the action class;
Create a JSP page that will process the result;
Register the action in xwork.xml.

以“HelloWorld”为例:

web.xml:

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>My WebWork Application</display-name>
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/lib/webwork-2.1.jar</taglib-location>
</taglib>
</web-app>

这个文件注册了一个ServletDispatcher,它与*.action映射

xwork.xml:                
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">

<xwork>
<!-- Include webwork defaults (from WebWork-2.1 JAR). -->
<include file="webwork-default.xml" />

<!-- Configuration for the default package. -->
<package name="default" extends="webwork-default">
  <!-- Default interceptor stack. -->
  <default-interceptor-ref name="defaultStack" />
 
  <!-- Action: Lesson 03: HelloWebWorldAction. -->
  <action name="helloWebWorld" class="lesson03.HelloWebWorldAction">
   <result name="success" type="dispatcher">ex01-success.jsp</result>
  </action>
</package>
</xwork>

       这个文件是告诉webwork有这样一个action,名字叫做“helloWebWorld”   ,而这样一个action会由“lesson03.HelloWebWorldAction”这样一个类去实现。在这样的action作用下,会得到什么样的结果呢? <result name="success" type="dispatcher">ex01-success.jsp</result>  成功后的结果会对应到ex01-success.jsp这样一个.jsp文件里面去。

ex01-success.jsp:
<%@ taglib uri="webwork" prefix="ww" %>
<html>
<head>
<title>WebWork Tutorial - Lesson 3 - Example 1</title>
</head>
<body>

<ww:property value="hello" />

</body>
</html>
这样我们就可以明白,当我们在浏览器地址栏上,点击某个action地址的时候,浏览器将会发送这个URL给helloWebWorld.action ,这时servelt容器会触发WebWork's ServletDispatcher,并在xwork.xml文件中寻找action,对照映射将这样的一个action name找到对应到action:lesson03.HelloWebWorldAction      这时一个新的action实例被创建,并执行execute() 这个方法。
HelloWebWorldAction.java:
package lesson03;

import com.opensymphony.xwork.ActionSupport;

public class HelloWebWorldAction extends ActionSupport {
String hello;
public String getHello() {
  return hello;
}
public String execute() throws Exception {
  hello = "Hello, WebWorld!";
  return SUCCESS;
}
}
当执行execute()后,返回的结果是SUCCESS这个值的VALUE是 success,这个时候ServletDispatcher获得了从execute()返回的值,并在xwork.xml文件中寻找拥有这个名字的结果,如果找到了,就执行其后相应的“ex01-success.jsp”
运行这样的一个APP。你将会在浏览器中看到"Hello ,WebWorld".
解释一下,"Hello WebWorld"之所以会出现的原因,是因为标签"<ww:property value="hello" />" ,这个标签在action类中寻找可以被执行的.在这个APP中,实际上,标签寻找的是它的父类的方法"getHello()" ,因为它被子类复写,所以执行子类的这个方法。又因为"HelloWebWorldAction"这个方法被执行,而在这个方法中hello被赋值为“Hello, WebWorld”所以getHello() 将返回“Hello, WebWorld”,并在 ex01-success.jsp 文档中被显示出来。
附带原文的依据话"Actions are the basic "unit-of-work" in WebWork, they define, well, actions. An action will usually be a request, (and usually a button click, or form submit). " 
     我们可以总结一下,整个Web应用程序的处理流程了:
        首先,当用户提交了表单(form)至Login.action后,由web.xml中定义的唯一的一个servlet:webwork去处理这个请求。webwork会以action的name:Login到xwork.xml中寻找相应的处理action的类,于是就找到了fantasysoft.webwork包中的Login类,由Login类中的execute方法来处理提交的form的数据了;
        然后,根据execute方法的返回值,再到xwork.xml中对应的action节点中去找匹配的result子节点;
        最后,根据result子节点的定义,将处理结果分发(dispatch)或者重定向(redirect)至下一个页面。
分享到:
评论
1 楼 robbin 2006-10-21  
webwork确实不错

BTW:你可以用博客的导入导出功能批量导入博客

相关推荐

    Hello World the WebWork way

    ### WebWork框架下的“Hello World”示例解析 #### 标题解读:“Hello World the WebWork way” - **核心概念**:本标题旨在通过一个简单的“Hello World”示例介绍如何在WebWork框架中实现基本的功能。对于初学者...

    怎么用WebWork来实现HelloWorld.docx

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

    webWork2.26 的helloWorld 例子

    本示例是一个基于WebWork2.26的“HelloWorld”程序,非常适合初学者了解WebWork的基本用法和工作原理。 首先,我们需要理解WebWork的核心概念: 1. **Action**:Action是WebWork的核心组件,它代表了业务逻辑。在...

    webwork之HelloWorld篇

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

    WebWork入门例子 HelloWorld

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

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

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

    webwork_helloworld

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

    WebWork2.2.7-helloWorld终于实验成功

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

    webwork in action

    - **第一个WebWork应用**:通过一个简单的“Hello World”示例,读者可以快速上手WebWork框架的基本用法,了解其工作流程和基本概念。 - **核心概念**:本书第二部分深入探讨了WebWork的核心概念,如动作、拦截器、...

    webwork in action 源代码

    《WebWork in Action》是一本专注于介绍WebWork框架的书籍,源代码的提供是为了让读者更深入地理解和实践书中的示例。WebWork是一个基于Java的MVC(模型-视图-控制器)框架,用于构建动态Web应用程序。它强调了代码...

    webwork in action 04

    webwork in action 第一部分:概貌 第二部分:核心内容 第三部分:内容的显示 第四部分:高级话题

    Webwork in action

    - **项目搭建**:通过一个简单的“Hello World”示例介绍如何搭建WebWork环境,包括配置文件设置、依赖管理等。 - **动作编写**:展示如何编写动作类以及如何定义动作的行为逻辑。 - **视图展示**:介绍如何将动作的...

    Webwork.in.action最新中文版

    《Webwork.in.Action》是一本深入探讨Webwork框架的书籍,中文版的出现使得国内开发者能够更方便地学习和理解这一强大的Java web开发框架。Webwork是由一系列组件组成的MVC(Model-View-Controller)框架,它在Java...

    webwork in action 中文版.part02.rar

    webwork in action 中文版

    webwork in action 中文版.part07.rar

    webwork in action 中文版

Global site tag (gtag.js) - Google Analytics