Struts Flow 的猜数字游戏演示程序

本文介绍了一个使用StrutsFlow实现的猜数字游戏示例。该示例通过循环等待用户输入,提供反馈提示,直至猜中随机数。文章详细展示了FlowCode、Struts配置及JSP页面的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

猜数字游戏Example

这个例子展示使用了Struts Flow的猜数字游戏的实现。目的是为了展现这个扩展功能的基本概念,所以这个例子保持简单。这个例子基本上有三部分;flow code, the Struts config, 和用来显示输出的JSP

Flow Code

flow code 如下所示:

function main() {

  var random =  Math.round( Math.random() * 9 ) + 1;
  var hint = "No hint for you!"
  var guesses = 0;

  while (true) {

    // send guess page to user and wait for response
    forwardAndWait("failure", 
       { "random"  : random, 
         "hint"    : hint,
         "guesses" : guesses} );

    // process user's guess
    var guess = parseInt( struts.param.guess );
    guesses++;
    if (guess) {
      if (guess > random) {
        hint = "Nope, lower!"
      } 
      else if (guess < random) {
        hint = "Nope, higher!"
      } 
      else {
        // correct guess
        break;
      }
    }
  }

  // send success page to user
  forwardAndWait("success", 
     {"random"  : random, 
      "guess"   : guess, 
      "guesses" : guesses} );
}

注意程序是如何循环直到数字被猜对,甚至是页被发到浏览器去获得用户的输入。

Struts Configuration

为了用Struts配置这个程序,下面的action mappingplug-in被定义在struts-config.xml:

<action-mappings>

    <action    path="/guess"
               type="net.sf.struts.flow.FlowAction"
          className="net.sf.struts.flow.FlowMapping">
           
      <set-property property="function"   value="main"/>     
      <forward name="failure" path="/guess.jsp"/>
      <forward name="success" path="/success.jsp"/>
    </action>
</action-mappings>   


<plug-in className="net.sf.struts.flow.FlowPlugIn">
    <set-property property="scripts" value="/WEB-INF/numberguess.js" />
</plug-in>

自定义的action mapping中的function属性告知JavaScript函数的FlowAction被调用。

JSP Presentation

为了收集用户猜测,guess.jsp声称一个表单:


   
<html>
<head>
 <title>Struts Flow number guessing game</title>
</head>
<body>
 
 <h1>Guess the Number Between 1 and 10</h1>
 
 <h2><%= request.getAttribute("hint") %></h2>
 
 <h3>You've guessed <%= request.getAttribute("guesses") %> times.</h3>
 
 <form method="post" action="guess.do">
    <input type="hidden" name="contid" value='<%= request.getAttribute("contid") %>' />
    <input type="text" name="guess"/>
    <input type="submit"/>
 </form>
 
</body>
</html>
隐藏的输入变量contid 存储当表单提交时加载的延续。

原文地址:http://struts.apache.org/struts-flow/guess-example.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值