webwork + ajax 整合实例

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

<! DOCTYPExworkPUBLIC"-//OpenSymphonyGroup//XWork1.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 ... {
privateintcounter=1;
privatedoublerandom;
publicStringexecute()...{
Stringres
="";
Stringtask
=getParameter("task");
Stringmessage
="";
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)...{
case1:message="Stevewalksonstage";break;
case2:message="iPodsrock";break;
case3:message="StevesaysMacsrule";break;
case4:message="Changeiscoming";break;
case5:message="Yes,OSXrunsonIntel-hasforyears";break;
case6:message="MacswillsoonhaveIntelchips";break;
case7:message="done";break;
}

}

res
="<message>"+message+"</message>";
try...{
HttpServletResponseresponse
=ServletActionContext.getResponse();
PrintWriterout
=response.getWriter();
response.setContentType(
"text/html");
response.setHeader(
"Cache-Control","no-cache");
out.write(res);
out.close();

}
catch(Exceptione)...{
System.out.println(e.getMessage());
}



return"";
}

}

< html >
< head >
< title > updateofajax </ title >
< script type ="text/javascript" > ...
varxmlHttp;
vardom;
functioncreateXMLHttpRequest()...{
if(window.ActiveXObject)...{
xmlHttp
=newActiveXObject("Microsoft.XMLHTTP");
}
else...{
xmlHttp
=newXMLHttpRequest();
}

}


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


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

}

}


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


functionrefreshTime()...{
vartime_span=document.getElementById("time");
vartime_val=time_span.innerHTML;
varint_val=parseInt(time_val);
varnew_int_val=int_val-1;

if(new_int_val>-1)...{
setTimeout(
"refreshTime()",5000);
time_span.innerHTML
=new_int_val;
}
else...{
time_span.innerHTML
=5;
}

}


functionpollCallback()...{
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);
varmessage=dom.getElementsByTagName("message")[0].firstChild.data;

if(message!="done")...{
varnew_row=createRow(message);
vartable=document.getElementById("dynamicUpdateArea");
vartable_body=table.getElementsByTagName("tbody").item(0);
varfirst_row=table_body.getElementsByTagName("tr").item(1);
table_body.insertBefore(new_row,first_row);
setTimeout(
"pollServer()",5000);
}

}

}

}


functioncreateRow(message)...{
varrow=document.createElement("tr");
varcell=document.createElement("td");
varcell_data=
分享到:
评论

你可能感兴趣的:(JavaScript,Ajax,jsp,浏览器,Webwork)