使用xmlhttp和java session監(jiān)聽改善站內(nèi)消息系統(tǒng)
bromon 原創(chuàng) 引自:http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=25340
這個(gè)題目含有許多需要解釋的概念,最輕易說(shuō)明的是“站內(nèi)消息”,這是很多論壇都有的功能,可以通過(guò)web向其他的在線用戶發(fā)送消息,很多用戶都使用過(guò)。站內(nèi)消息的第一個(gè)好處是大家都不需要安裝客戶端,你不用知道對(duì)方的MSN或者QQ,就能與他聯(lián)系,稱贊他的觀點(diǎn)或者是給他一頓臭罵。第二個(gè)好處是客戶治理方便,利用session來(lái)維護(hù)在線名單,各種腳本都已經(jīng)把session操作封裝得很易用了,不用像其他無(wú)狀態(tài)的即時(shí)通信工具(比如使用UDP通信的工具)一樣,要費(fèi)一些腦細(xì)胞來(lái)解決在線名單的問(wèn)題。缺點(diǎn)嘛,就是實(shí)時(shí)性不好,一般是在用戶跳轉(zhuǎn)或者刷新頁(yè)面才能探測(cè)消息、更新在線名單。
Session監(jiān)聽嘛,沒什么好解釋的,java提供了很靈活的事件機(jī)制來(lái)監(jiān)聽session,可以監(jiān)聽session的創(chuàng)建和銷毀,監(jiān)控session所攜帶數(shù)據(jù)的創(chuàng)建、變化和銷毀,可以監(jiān)聽session的銳化和鈍化(了解對(duì)象序列化的兄弟應(yīng)該知道這個(gè)),其他的平臺(tái)是個(gè)什么情況我不太清楚,估計(jì)也差不多吧。假如能夠?qū)λ锌蛻舻膕ession進(jìn)行監(jiān)控,就不用再去操作麻煩而危險(xiǎn)的application了。
xmlhttp是MS推的一項(xiàng)技術(shù),功能很復(fù)雜,可以做很多事情,比如客戶端可以在簡(jiǎn)單的Html中打開HTTP連接,主動(dòng)向server請(qǐng)求數(shù)據(jù)并獲得返回?cái)?shù)據(jù),是DOM技術(shù)一個(gè)非常重要的應(yīng)用,利用它來(lái)寫無(wú)刷新的動(dòng)態(tài)頁(yè)面簡(jiǎn)直是so easy,做過(guò)web開發(fā)的兄弟應(yīng)該明白它的意義有多么重大。
一、 session監(jiān)聽
servlet中對(duì)session的監(jiān)聽有很多接口,功能很靈活,最常用的是監(jiān)聽Session和Attribute。這里要澄清一下概念,servlet中的session監(jiān)聽和Attribute監(jiān)聽含義有差別,session監(jiān)聽指的不是我們一般所理解的放置一個(gè)session或者銷毀一個(gè)session,這是Attribute監(jiān)聽的功能,因?yàn)閟ervlet中放置session的語(yǔ)法是session.setAttribute(“session名”,要放入的對(duì)象)。而session監(jiān)聽,監(jiān)聽的是HTTP連接,只要有用戶與server連接,就算連接的是一個(gè)空白的jsp頁(yè)面,也會(huì)觸發(fā)session事件,所以此處的session實(shí)際上指的是connection,用來(lái)統(tǒng)計(jì)當(dāng)前在線用戶數(shù)最合適了。不知道我說(shuō)清楚了沒有。下面分別講解這兩種監(jiān)聽方式。
1、 session監(jiān)聽
首先編寫一個(gè)session監(jiān)聽類,實(shí)作HttpSessionListener接口,它的作用是計(jì)算當(dāng)前有多少個(gè)在線用戶:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注