JSP学习笔记(九十六):学习使用dwr 中的push技术

dwr里面的push技术可以做这样的事情:服务器发送一个广播,让每一个客户端都能接收到这个广播。一般的做法,就是让客户端每隔一定时间刷新一下,获取服务器发送的请求,这种方法可以,不过性能一定是最低的。dwr的push技术是让服务器每次发送广播时,把这个广播推送给客户端,不用客户端去刷新,据说是dwr的推送是基于长连接的,性能不错,具体的原理,我暂时也没搞清楚,先不管这些了,先实现了再说。

上一篇文章已经介绍了dwr的使用,这里我假设你已经会用dwr的基本使用了。

修改web.xml,启用dwr的Reverse Ajax,也就是我们要用的push技术:

     < servlet >
        
< servlet-name > dwr-invoker </ servlet-name >
        
< servlet-class > uk.ltd.getahead.dwr.DWRServlet </ servlet-class >
        
< init-param >
            
< param-name > debug </ param-name >
            
< param-value > true </ param-value >
        
</ init-param >
        
< init-param >
            
< param-name > activeReverseAjaxEnabled </ param-name >
            
< param-value > true </ param-value >
        
</ init-param >
        
< init-param >
            
< param-name > initApplicationScopeCreatorsAtStartup </ param-name >
            
< param-value > true </ param-value >
        
</ init-param >
        
< load-on-startup > 1 </ load-on-startup >
    
</ servlet >

    
< servlet-mapping >
        
< servlet-name > dwr-invoker </ servlet-name >
        
< url-pattern > /dwr/* </ url-pattern >
    
</ servlet-mapping >

 

添加一个Servlet,用来发送广播:

public class TestServlet extends HttpServlet {
    
public TestServlet() {
        
super();
    }

    
protected void doGet(HttpServletRequest request,
            HttpServletResponse response) 
throws ServletException, IOException {
        ServerContext wctx 
= ServerContextFactory.get(getServletContext());
        Collection
<ScriptSession> sessions = wctx.getAllScriptSessions();

        
// Collection<ScriptSession> sessions =
        
// wctx.getScriptSessionsByPage("/poject/test.html");
        
        String msg 
= request.getParameter("msg");
        
if(msg==null)
        {
            msg 
= "empty";
        }

        ScriptBuffer script 
= new ScriptBuffer();
        script.appendScript(
"showMessage(").appendData(msg)
                .appendScript(
");");

        
for (ScriptSession session : sessions) {
            session.addScript(script);
        }
    }

}

 

添加一个html页面,用来接收服务端广播:

< script  type ='text/javascript'  src ='dwr/engine.js' ></ script >
< script  type ="text/javascript" >
dwr.engine.setActiveReverseAjax(
true );
function  showMessage(msg) 

    alert(msg);

</ script >
打开添加的html页面,然后打开Servlet发送一个广播,哈哈,html页面就会自动弹出一个javascript对话框,到此,dwr的推送就完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值