论坛首页 Java企业应用论坛

webwork使用了RIFE 带来什麽好处?

浏览 8470 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-09-30  
chenggn 写道
pause(SUCCESS);

会显示SUCCESS页面, 当用户提交后,循环继续


但是这和普通的java程序有什麽区别,方便在哪里,能讲一下么
0 请登录后投票
   发表时间:2005-09-30  
lyo 写道
chenggn 写道
pause(SUCCESS);

会显示SUCCESS页面, 当用户提交后,循环继续


但是这和普通的java程序有什麽区别,方便在哪里,能讲一下么


不用这种方法你写写看,就知道了
0 请登录后投票
   发表时间:2005-10-09  
chenggn 写道
lyo 写道
chenggn 写道
pause(SUCCESS);

会显示SUCCESS页面, 当用户提交后,循环继续


但是这和普通的java程序有什麽区别,方便在哪里,能讲一下么


不用这种方法你写写看,就知道了


这个东东值得深入探讨下,俺搬个板凳准备听课~

问:是不是可以理解为RIFE把执行的上下文(类似ruby的binding) 保存下来,放到HttpSession中(通过inteceptor?),在收到下次表单提交时取出上下文,在此基础上继续执行?

又问:
RIFE的机理是什么?
webwork如何与之集成?

如果这样,我理解也是`有状态`应用的例子
再问:
不知还有什么经典应用场景,感觉在web开发中是个待发掘的区域啊~

查到一点相关资料:
RIFE Web continuations:
http://rifers.org/wiki/display/RIFE/Web+continuations
RIFE官方站点:
http://rifers.org/

似乎RIFE官方资料能回答我不少疑问,太晚了,睡也~
0 请登录后投票
   发表时间:2005-10-20  
同类的应用,本论坛的发帖(回复)->预览 功能算一个吧
0 请登录后投票
   发表时间:2005-10-20  
lyo 写道
从他的例子也看不出来,RIFE的优点,这和普通的java循环有什麽区别?
As mentioned in my last entry, WebWork now uses RIFE's continuation engine to provide a great new way to develop web applications. Now, if you choose, you can develop your applications using logical loops and control structures. This is effectively, as Bruce Tate likes to call it, a higher level way to express your program. A simple example is the following code:

public class Guess extends ActionSupport {
    int guess;

    public String execute(); throws Exception {
        int answer = new Random();.nextInt(100); + 1;
        int tries = 5;

        while (answer != guess && tries > 0); {
            pause(SUCCESS);;

            if (guess > answer); {
                addFieldError("guess", "Too high!");;
            } else if (guess < answer); {
                addFieldError("guess", "Too low!");;
            }

            tries--;
        }

        if (answer == guess); {
            addActionMessage("You got it!");;
        } else {
            addActionMessage("You ran out of tries, the answer was " + answer);;
        }

        return SUCCESS;
    }

    public void setGuess(int guess); {
        this.guess = guess;
    }
}

Note how the conceptual "loop" of a number guessing game can now actually be represented as a loop in your Java code? Using RIFE's continuation engine, the class is instrumented to do some tricky stuff underneath, allowing the execution to start immediately after a pause(); call. The result is a much more logic action. 


哪位了解RIFE,能否解释一下?


我不了解RIFT,纯粹从代码看来,我觉得这个程序应该是这么解释的:
1。总共可以猜5次,第一次进来的时候初始化一个随机数:
        int answer = new Random().nextInt(100) + 1;
        int tries = 5;
2。对猜测的数与结果进行比较。 如果没猜对,跳到3;猜对跳到6
3。保持住一些信息(具体是什么我也不知道,呵呵^_^),并等待下次输入
             pause(SUCCESS);           
     然后给页面返回一些消息:
            if (guess > answer) {
                addFieldError("guess", "Too high!");
            } else if (guess < answer) {
                addFieldError("guess", "Too low!");
            }
4。得到再一次的输入信息,再进行比较(回到2。)。直到 ( tries !> 0),到达5。
5。输出错误信息,并给出正确结果:addActionMessage("You ran out of tries, the answer was " + answer);
6。给出猜对了的信息:addActionMessage("You got it!");

但是看起来用一般的技术也可以实现啊?是不是在于
  pause(SUCCESS);
使得非第一次输入的时候都走的是
while (answer != guess && tries > 0)
而不是 int answer = new Random().nextInt(100) + 1;??
如果是的话,好像有一种似曾相识的感觉。好像是操作系统还是那门课关于出现异常时保留现场的意思。


那位比较明白,给讲解一下
0 请登录后投票
   发表时间:2005-11-02  
我看了一下刚刚checkout下来的xwork,pause方法是空的,还没有实现。自己想一下,如果真的要实现的话,得怎么做呢?保存状态不是难事,问题是你怎么让pause()后又提交回来时直接从pause下面开始运行!
0 请登录后投票
   发表时间:2005-11-02  
刚才有仔细搜索了一下Webwork的Wiki,原来是实现了的。虽然pause方法是空的,但是对于要用Coninuation的ActionSupport,WW会生成另一个类来实现。但是有一个地方要改动:在webwork.properties中加入一个webwork.continuations.package=xxx。指定要用coninuation的包。
具体见:http://wiki.opensymphony.com/display/WW/Continuations
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics