dwr2.x的推技術也叫dwr reverse ajax(逆向ajax)主要是在bs架構中,從伺服器端向多個瀏覽器主動推資料的一種技術。
在dwr所開的執行緒中使用reverse ajax時,通過webcontextfactory.get()獲取webcontext物件,進而獲取指令碼session。
在dwr之外使用reverse ajax時,就要用到servercontext,在spring環境中要得到servercontext,就需要用到spring的servletcontextaware介面。
一、reverse ajax的實現有3種方式:
dwr的逆向ajax主要包括兩種模式:主動模式和被動模式。其中主動模式包括polling和comet兩種,被動模式只有piggyback這一種。
1、piggyback方式
這是預設的方式。
如果後台有什麼內容需要推送到前台,是要等到那個頁面進行下一次ajax請求的時候,將需要推送的內容附加在該次請求之後,傳回到頁面。
只有等到下次請求頁面主動發起了,中間的變化內容才傳遞歸頁面。
2、comet方式
當服務端建立和瀏覽器的連線,將頁面內容傳送到瀏覽器之後,對應的連線並不關閉,只是暫時掛起。如果後面有什麼新的內容需要推送到客戶端的時候直接通過前面掛起的連線再次傳送資料。
伺服器所能提供的連線數目是一定的,在大量的掛起的連線沒有關閉的情況下,可能造成新的連線請求不能接入,從而影響到服務質量。
3、polling方式
由瀏覽器定時向服務端傳送ajax請求,詢問後台是否有什麼內容需要推送,有的話就會由服務端返回推送內容。這種方式和我們直接在頁面通過定時器傳送ajax請求,然後查詢後台是否有變化內容的實現是類似的。只不過用了dwr之後這部分工作由框架幫我們完成了。
二、使用dwr的推技術的步驟
1、在web.xml檔案中增加以下配置資訊
dwr-invokeruk.ltd.getahead.dwr.dwrservlet
debug
true
pollandcometenabled
true
1
/dwr/*org.directwebremoting.servlet.efficientshutdownservletcontextattributelistener
org.directwebremoting.servlet.efficientshutdownservletcontextlistener2、在dwr.xml中增加以下配置資訊
3、pojo類message的原始碼
public class message
public message(string newtext)
public long getid()
public void setid(long id)
public string gettext()
public void settext(string text)
}
4、dwrhelper類原始碼
public class dwrhelper
}}catch(exception ex)finally
//獲得dwr上下文
webcontext webcontext = webcontextfactory.get();
//獲取當前頁面url,比如/ext3/test_tag.jsp
string currentpage = webcontext.getcurrentpage();
//當前指令碼sessin
scriptsession scriptsession = webcontext.getscriptsession();
//設定頁面控制項的值
util util = new util(scriptsession);
util.setvalue("text", ""); //這裡是清空頁面輸入框的值
//設定指令碼sessin的屬性值
scriptsession.setattribute("uid", "cjm");
//獲取指令碼session的屬性值
for(iterator it=scriptsession.getattributenames();it.hasnext();)
//獲取所有瀏覽當前頁面的指令碼session
collection
關於DWR的推技術問題
我大概看了一下dwr的推的機制,我的理解是 伺服器狀態儲存在scriptsession中 客戶端頁面中的引擎定時發請求到web 伺服器 察看scriptsession 如果發現不為空,則將scriptsession中儲存的js呼叫傳送到客戶端頁面,否則 執行緒等待一定時間,但是scriptsessi...
請教關於DWR的推技術問題,
我大概看了一下dwr的推的機制,我的理解是 伺服器狀態儲存在scriptsession中 客戶端頁面中的引擎定時發請求到web 伺服器 察看scriptsession 如果發現不為空,則將 scriptsession中儲存的js呼叫傳送到客戶端頁面,否則 執行緒等待一定時間,但是scriptsess...
dwr實現的無重新整理技術 dwr jsp
dwr實現的無重新整理技術,詳情見附件 dwr實現的n級聯動無重新整理效果 1,在web.xml檔案裡面配置這樣一段 dwruk.ltd.getahead.dwr.dwrservlet debug true dwr 2,把dwr.jar包加到lib資料夾裡面。3,配置乙個dwr.xml檔案,放在we...