DWR服务器推模式(附dwr2.x API)
用户登录后,显示所有文件的列表。点击“上传文件”,弹出文件上传窗口,用户浏览本地文件确定提交后,就可以将文件上传至服务器指定的位置。服务器将上传者和文件信息推送到所有的客户端页面指定的div中显示,并在页面文件列表的表格最后添加一行新上传的文件信息。
涉及的技术:
1.?Struts?1.x
2.?Dwr?2.0?服务器推模式
3.?Jsp
?
实现代码摘要:
FileAction.java
文件上传成功后,调用fileList.jsp中JavaScript方法sendMessag(msg);
?
out.println("<script?type='text/javascript'>"?+??????
"opener.sendMessage('"+username+"@"+fileName+"@"+sizeStr+"@"+
sdf.format(new?Date()).replace("?",?"")+"');"+
"</script>");
?
fileList.jsp
sendMessag(msg)调用后台UpLoadTip.java中的upBroadcast(msg)方法,并将新上传的文件信息作为参数传递过去。
?
<script?type='text/javascript'?src='./dwr/engine.js'></script>?<script?type='text/javascript'?src='./dwr/interface/UpLoadTip.js'>???</script>
<script?type='text/javascript'?src='./dwr/util.js'></script>
<script?type="text/javascript">
????function?sendMessage(msg)?{
??????UpLoadTip.upBroadcast(msg);
????}
?????
????function?show(obj){
????addNewRow(obj);?//在文件列表?表格最后追加一行
???}
</script>
?
Dwr.xml(配置文件)
?
<dwr>
<allow>
<create?creator="new"?javascript="UpLoadTip">
<param?name="class"?value="com.kuntuo.service.impl.UpLoadTip"/>
</create>
??</allow>
</dwr>
?
UpLoadTip.java
此类实现了服务器推模式的功能,首先获取需要推送的目标文件的所有客户端,然后进行回调客户端的show(msg)JavaScript方法。
?
public?class?UpLoadTip?{
??public?void?upBroadcast(String?msg){
????WebContext?wctx?=?WebContextFactory.get();
????String?currentPage?=?wctx.getCurrentPage();
????//获取当前页的所有客户端
????ScriptProxy?sp?=?new?ScriptProxy(
?????????????wctx.getScriptSessionsByPage(currentPage));
????//调用客户端show方法,并传递参数msg;
????sp.addFunctionCall("show",?msg);
??}
}
客户端的show(msg)方法来提示所有客户端“XXX上传了XXX文件”,并调用adNewRow(mag)将页面文件列表的表格最后添加一行新上传的文件信息。