webwork学习笔记

原创 2004年05月17日 17:06:00

webwork学习笔记
------------------------------
作者: kingfish(vc--@sohu.com)
关键字: webwork1.4, tomcat5
--------------------------------------
本人最近学习webwork,发现资料很少(如果您有,请发一份给我,先谢啦),
由于是开源项目,就粗略的看了看源码. 以下是我看后整理的一份笔记,
比较简单, 希望能给用得到的网友带来一点帮助.

水平有限,错误难免,请见谅+指正!

环境说明:
  使用Tomcat5.0+webwork1.4
  将下载的webwork中的webwork.war在tomcat的webapps下解开为webwork目录.

一. 一个servlet :webwork.dispatcher.ServletDispatcher
  
  1.简介
   webwork1.4所有自带例子中的action都提交到此servlet进行处理,重要性当然不言而喻.
   打开webwork/WEB-INF下web.xml,可以看到以下配置

    ...
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>webwork.dispatcher.ServletDispatcher</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    ...
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
   ...

   
   
   2 功能:
        1. 处理action请求
        2. 查找相应action类,产生实例.
        3. 执行doValidation()校验输入参数;
        4. 如果3校验结果为合法, 执行doExecute();
        5. 根据执行结果字符串("success","input","error")查找views配置转到相应view.

二.  动手写一个简单例子

1. HelloAction.java 源代码

import webwork.action.ActionSupport;
import webwork.action.Action;

public class HelloAction
    extends ActionSupport {
  private String name ;
  public HelloAction() {
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }

  public void doValidation() {
    else if(name==null||name.length()<1){
      addError("Name","can't be null or empty!");
    }
  }

  //如果不做其它处理,也可以不override此方法.缺省返回success
  public String doExecute() {
      return SUCCESS;
  }
}
编译完的class文件拷入webwork/WEB-INF/classes下.

2.配置
有两种配置方法可选:
(1) 配置views.properties(在webwork/WEB-INF/classes下)
hello.action=HelloAction
hello.input=helloinput.jsp
hello.success=hellosuccess.jsp
hello.error=helloerror.jsp

(2) 配置actions.xml(在webwork/WEB-INF/classes下)
在原有基础上增加下面一个action
   <action name="HelloAction" alias="hello">
      <view name="success">hellosuccess.jsp</view>
      <view name="error">helloerror.jsp</view>
      <view name="input">helloinput.jsp</view>
   </action>

3.相关jsp文件
 建立以下四个jsp文件,存放目录为:webwork下.
(1)index.jsp
 <html>
  <head>
    <title>test webwork</title>
  </head>
  <body>
    <A href="helloinput.jsp">example</a>
  </body>
</html>
(2)helloinput.jsp
<html>
  <head>
    <title>test webwork</title>
  </head>
  <body>
  <form action="hello.action" method="post">
    <input type="text" name="name" value=""/>
    <input type="submit" value="Submit"/>
  </form>
  </body>
</html>
(3)hellosuccess.jsp
<HTML>
<HEAD>
<TITLE>Test</TITLE>
</HEAD>
<BODY>
Hello world!
</BODY>
</HTML>
(4)helloerror.jsp
  同上,将字符串改掉即可.
  本例子中只是配置中用到,运行过程未用此页面.

4.运行
  (1)启动Tomcat
  (2)IE中输入:http://localhost:8080/webwork/index.jsp
  (3)不输入任何字符,提交,页面仍然在helloinput.jsp
     输入字符后提交,页面转至hellosuccess.jsp

5.流程说明
  (1) 启动Tomcat后, 初始化servlet(ServletDispatcher)
  (2) 在输入页面(helloinput.jsp), 输入字符提交(提交到hello.action)
  (3) 根据web.xml中配置,此请求由ServletDispather处理.
  (4) servlet根据actionName("hello")查找配置(配置内容:hello.action=HelloAction)
  (5) 产生HelloAction实例
  (6) servlet调用HelloAction的doValidation()校验输入参数.
  (7) 校验通过, servlet调用HelloAction的doExecute(),返回成功("success").
  (8) 根据views配置查找到:hello.success=hellosuccess.jsp (actionaliasName.viewName=pagename)
  (9) servlet中forward到hellosuccess.jsp
  (10)输出hello world!, 完成.

  如果不输入直接提交,以下几步略有不同
  (7) 校验未通过,产生错误信息. 其它方法中检测到有错误信息,默认返回"input"
  (8) 根据views配置查找到:hello.input=helloinput.jsp
  (9) servlet中forward到helloinput.jsp
  (10)完成.

6.补充
  HelloAction的调用步骤其实是:
  ServletDispatcher->GenericDispatcher->调用executeaction()->ActionSupport的execute()->调用HelloAction的相应方法.
  5中的说明只是为了简单而这样描述的.
  如果你对这些有兴趣,可以看看ServletDispatcher,GenericDispatcher,ActionSupport,Action等源码.

三. webwork自带例子Bank app的简单介绍
   1.环境
    http://localhost:8080/webwork 中JSP下面的Bank app
    相关class:webapps/webwork/WEB-INF/lib/webwork-examples.jar中的webwork.examples.bank.Transfer
    相关jsp:  webapps/webwork/examples/bank/index.jsp,transfer.jsp,confirm.jsp
    相关配置: webapps/webwork/-WEB-INF/classes/views.properties
      # Bank example (Struts example adaptation)
       bank.transfer.action=bank.Transfer (即webwork.examples.bank.Transfer)
       bank.transfer.input=transfer.jsp
       bank.transfer.success=confirm.jsp
       bank.transfer.error=transfer.jsp
    由于webwork.properties配有
        webwork.action.packages=webwork.examples, webwork.examples.vxml
    因此上面配置bank.transfer.action=bank.Transfer省略了webwork.examples.

   2.index.jsp
   <jsp:forward page="bank.transfer!default.action"/>
   相当与
  <form action="bank.transfer!default.action" method="post">
    <input type="submit" />
  </form>
  自动提交.
   (1)提交到servlet, servlet处理bank.transfer!default.action(构成:actionAliasName+!commandName+.action)
      由于action中有command(command为:default), 通过reflect查找doCommand即(doDefault),
      执行doDefault()返回"input"
   (2)input对应的view为transfer.jsp,转到此页面.
   (3)输入参数后提交,执行bank.transfer.action, 其它流程与上面第二部分第5结类似.

 

===================================================================================
kingfish 2004.3
如转帖请保持文档完整.

欢迎交流!

WebWork深入浅出

原文链接地址:http://www.blogjava.net/moxie/archive/2006/10/20/76375.html 前言 本篇文章并没有太多WebWork 的实战代码细节。本人非常希...
  • u010955843
  • u010955843
  • 2015年09月09日 16:16
  • 940

浅谈Struts2与Webwork的不同和相同点

浅谈Struts2与Webwork的不同和相同点 2011-06-28 09:14 honeymoose OSS社区 字号:T | T 本文介绍的两大开发框架,Struts ...
  • autumn20080101
  • autumn20080101
  • 2016年05月16日 11:23
  • 1009

关于webwork框架返回JSON数据格式的问题2015-10-27

最近接触到webwork框架,因为项目需求,需要将后台的数据采用json格式返回。 通过百度搜索,找到的方法也很多,但都讲得不够具体,不容易看懂。这里找到一个方法,写了一个返回json的类继...
  • neil89
  • neil89
  • 2015年10月27日 16:08
  • 1338

WebWork框架的处理流程

都说Struts 2与Struts 1相差太大,Struts 2是从webWrok发展而来的,那什么是WebWord呢??看看下面的介绍. 1.3.1 WebWork框架 WebWork ...
  • chenzhengdui
  • chenzhengdui
  • 2014年05月05日 09:07
  • 945

webwork基础学习笔记1

关于webwork的基础学习笔记,仅供参考。
  • fqf_520
  • fqf_520
  • 2015年04月12日 17:04
  • 631

Linux学习笔记之——起始篇

摘要:学习笔记目录、方便以后回顾、没有什么捷径可走、不断的记录、总结、练习、coding、coding。...
  • chenghuaying
  • chenghuaying
  • 2014年03月31日 16:47
  • 4550

在计算机学习,善用“笔记软件”

为知笔记 Linux 版 2015-12-03 产品更新 提示:软件的名称由wiznote修改为WizNote,在终端命令行下需要使用WizNote来打开程序。 更新日志: 2.3.2 版本(201...
  • Lina_ACM
  • Lina_ACM
  • 2016年08月03日 10:41
  • 802

webwork 文件配置

- webwork.properties             Webwork属性配置文件。Webwork有个缺省的属性配置文件default.properties,在webwork.jar文件...
  • m0_37364073
  • m0_37364073
  • 2017年11月16日 14:00
  • 39

斯坦福机器学习网易公开课笔记1

之前在coursera上看了Andrew Ng的机器学习课程,那个课程比较简明,适合对机器学习有一个整体的印象,但是很多细节的内容和推导都忽略了。现在想要了解机器学习更多,所以开始看Andrew Ng...
  • zhonglj0314
  • zhonglj0314
  • 2017年02月20日 09:57
  • 529

《Java JDK8学习笔记》读书笔记(4)

第4章 认识对象 学习目标  区分基本类型与对象类型  了解对象与引用的关系  从打包器认识对象  以对象观点看待数组  认识字符串的特性...
  • mouyong
  • mouyong
  • 2016年04月18日 20:10
  • 4413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:webwork学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)