webwork + ajax 整合实例

转载 2007年09月26日 16:35:00
首先, 配置好webwork环境.
在webwork中应用ajax技术,只要在webwork的返回值上加以区别就可以把 动态取得的值,返回给前台浏览器.
在这个实例中,我们有一个html页面,一个java文件,然后再配置文件中写上相关映射就OK了.
代码如下:
dynamicUpdate.html
DynamicUpdate.java
  xwork.xml
在此配文件需要注意你的包名,我的包名是helloWorld;
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "X:WorkSpaceBFPPropertyconfigwebxwork-1.0.dtd">

<xwork>

<include file="webwork-default.xml"/>
     
     
<package name="helloWorld" extends="webwork-default">
         
<interceptors>
             
<interceptor name="params" class="com.opensymphony.xwork.interceptor.ParametersInterceptor"/>
         
</interceptors>    

        
<default-interceptor-ref name="defaultStack"/>

         
<action name="dynamicUpdate" class="control.DynamicUpdate">
               
<result name="success">/jsp/domainS.jsp</result>
               
<interceptor-ref name="model-driven"/>
              
<interceptor-ref name="params"/>             
         
</action>
     
</package>

</xwork>


OK,如果你是copy 的代码,在配置文件正确的情况下,应该可以运行了. 看看结果吧. 一定要注意配置文件和浏览器版本.在IE5以下的版本是不支持ajax的.
 

http://blog.csdn.net/sunyadongwanghbjm/archive/2007/09/25/1799725.aspx

package control;

import java.io.PrintWriter;
import java.math.*;
import javax.servlet.http.HttpServletResponse;

import com.opensymphony.webwork.ServletActionContext;

import core.BookActionSupport;

public class DynamicUpdate extends BookActionSupport...{
    
private int counter = 1;
    
private double random;
    
public String execute()...{
        String res 
= "";
        String task 
= getParameter("task");
        String message 
= "";
        random 
= Math.floor(Math.random()*100);
        
while(random > 7)...{
            random 
= Math.sin(random)*10 ;
            random 
= Math.abs(Math.floor(random));
            System.out.println(random);
        }

        counter 
= (int)random;
        
if(task.equals("reset"))...{
            counter 
= 1;
        }
else...{
            
switch(counter)...{
            
case 1: message = "Steve walks on stage"break;
            
case 2: message = "iPods rock"break;
            
case 3: message = "Steve says Macs rule"break;
            
case 4: message = "Change is coming"break;
            
case 5: message = "Yes,OS X runs on Intel-has for years"break;
            
case 6: message = "Macs will soon have Intel chips"break;
            
case 7: message = "done"break;
            }

        }

        res 
= "<message>" + message + "</message>";
        
try...{
            HttpServletResponse response 
= ServletActionContext.getResponse();
            PrintWriter out 
= response.getWriter();
            response.setContentType(
"text/html");
            response.setHeader(
"Cache-Control","no-cache");
            out.write(res);
            out.close();
            
        }
catch(Exception e)...{
            System.out.println(e.getMessage());
        }

        
        
        
return "";
    }

}

<html>
<head>
    
<title>update of ajax</title>
    
<script type="text/javascript">...
        
var xmlHttp;
        
var dom;
        
function createXMLHttpRequest()...{
           
if(window.ActiveXObject)...{
               xmlHttp 
= new ActiveXObject("Microsoft.XMLHTTP");
           }
else...{
               xmlHttp 
= new XMLHttpRequest();
           }

        }


        
function doStart()...{
            createXMLHttpRequest();
            
var url = "dynamicUpdate.action?task=reset";
            xmlHttp.open(
"GET",url,true);
            xmlHttp.onreadystatechange 
= startCallback;
            xmlHttp.send(
null);
        }

        
        
function startCallback()...{
            
if(xmlHttp.readyState == 4)...{
                
if(xmlHttp.status == 200 )...{
                    setTimeout(
"pollServer()",5000);
                    refreshTime();
                }

            }

        }

        
        
function pollServer()...{
            createXMLHttpRequest();
            
var url = "dynamicUpdate.action?task=foo";
            xmlHttp.open(
"GET",url,true);
            xmlHttp.onreadystatechange 
= pollCallback;
            xmlHttp.send(
null);
        }

        
        
function refreshTime()...{
            
var time_span = document.getElementById("time");
            
var time_val = time_span.innerHTML;
            
var int_val = parseInt(time_val);
            
var new_int_val = int_val -1;
            
            
if(new_int_val > -1)...{
                setTimeout(
"refreshTime()",5000);
                time_span.innerHTML 
= new_int_val;
            }
else...{
                time_span.innerHTML 
= 5;
            }

        }

        
        
function pollCallback()...{
            
if(xmlHttp.readyState == 4)...{
                
if(xmlHttp.status == 200)...{
                    
//alert(xmlHttp.responseText)
                   // alert(xmlHttp.responseXML.childNodes.length)
                //    alert(xmlHttp.responseXML.getElementsByTagName("message")[0]);
                    createXMLParser(xmlHttp.responseText);
                    
var message = dom.getElementsByTagName("message")[0].firstChild.data;
                    
                    
if(message != "done")...{
                        
var new_row = createRow(message);
                        
var table = document.getElementById("dynamicUpdateArea");
                        
var table_body = table.getElementsByTagName("tbody").item(0);
                        
var first_row = table_body.getElementsByTagName("tr").item(1);
                        table_body.insertBefore(new_row,first_row);
                        setTimeout(
"pollServer()",5000);
                    }

                }

            }

        }

        
        
function createRow(message)...{
            
var row = document.createElement("tr");
            
var cell = document.createElement("td");
            
var cell_data = document.createTextNode(message);
            cell.appendChild(cell_data);
            row.appendChild(cell);
            
return row;
        }

        
        
//初始化XML解析器
        function createXMLParser(text)...{
            
if(window.ActiveXObject)...{
                dom 
= new ActiveXObject("Microsoft.XMLDOM");
                dom.async 
= false;
                dom.loadXML(text);
            }
else...{
                
var parser = new DOMParser();
                dom 
= parser.parseFromString(text,"text/html");
            }

        }

    
</script>
</head>

<body>
<h1>Ajax Dynamic Update Example</h1>
This page will automatically update itself:
<input type="button" value="Launch" id="go" onclick="doStart()"/>
<p>
    Page will refresh in 
<span id="time">5</span> seconds 
</p>
<table id="dynamicUpdateArea" align="left">
    
<tbody>
        
<tr id="row0"><td></td></tr>
    
</tbody>
</table>
</body>
</html>

WebWork深入浅出

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

ajax post请求中文乱码问题解决(不使用escape方法,只使用filter)

本人另一篇博客总结了三种方案的比较,并提出了一种比本方案更好的一个方案,请参考:http://hjg1988.iteye.com/blog/472080      相信很多人都遇到过乱码问题,尤其在...
  • eric_za
  • eric_za
  • 2014年08月18日 15:30
  • 904

SSH三大框架的整合+利用Ajax实现无刷新分页

以下是我利用Struts2.3.24、Spring4.0、Hibernate4.2 结合Mysql数据库进行的ssh整合,实现分页需要json.js 首先ssh的整合需要导入所有的jar包在web....
  • qq_34078119
  • qq_34078119
  • 2017年02月20日 22:45
  • 1773

Struts2之—集成Json插件实现Ajax

上篇博客介绍了Struts2中自定义结果集实现Ajax,也分析了它的缺点:这样自定义的结果集,写死了,不能做到客户端需要什么数据就传什么数据; Struts2之—自定义结果集实现ajax    本篇...
  • hanxuemin12345
  • hanxuemin12345
  • 2014年08月23日 22:17
  • 4926

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

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

JQuery整合Ajax的方式及应用

JQuery作为一个JavaScript的一个类库,不仅体积小,而且强大,这在之前的所有测试中都是知道的,而Ajax这一个技术又是在提高用户的体验方面是必不可少的,以前,我们都知道,用JavaScri...
  • MyCodeDream
  • MyCodeDream
  • 2015年03月25日 16:01
  • 584

Webwork-2.2.4迁移至struts-2.3.16涉及的相关修改

Webwork-2.2.4迁移至struts-2.3.16涉及的相关修改 1、jar替换 当前环境webwork及相关jar版本 升级至struts-2.3.16所需的j...
  • abudexiatian
  • abudexiatian
  • 2014年05月26日 10:58
  • 1536

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

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

Spring Ajax一个简单例子

配置不说了,要在前面helloworld的例子基础上弄。 同样在hello下新建ajax.jsp Spring MVC Example with AJAX call body { ...
  • yang362046076
  • yang362046076
  • 2014年12月15日 22:59
  • 1650

WebWork框架的处理流程

都说Struts 2与Struts 1相差太大,Struts 2是从webWrok发展而来的,那什么是WebWord呢??看看下面的介绍. 1.3.1 WebWork框架 WebWork ...
  • chenzhengdui
  • chenzhengdui
  • 2014年05月05日 09:07
  • 942
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:webwork + ajax 整合实例
举报原因:
原因补充:

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