webwork + ajax 整合实例

首先, 配置好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 >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值