用户登录后,显示所有文件的列表。点击“上传文件”,弹出文件上传窗口,用户浏览本地文件确定提交后,就可以将文件上传至服务器指定的位置。服务器将上传者和文件信息推送到所有的客户端页面指定的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); //在文件列表 表格最后追加一行 } |
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)将页面文件列表的表格最后添加一行新上传的文件信息。