国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用DWR2異步實現(xiàn)服務(wù)器推技術(shù) - 網(wǎng)絡(luò)基礎(chǔ)\學(xué)院\技術(shù) — C114(中國通信網(wǎng))

使用DWR2異步實現(xiàn)服務(wù)器推技術(shù)

http://www.c114.net ( 2009/3/30 14:10 )

因IE下AJAX最長連接為1小時,無法滿足部分變態(tài)需求,特此使用DWR推技術(shù)實現(xiàn)請求SESSION傳輸。

前提:系統(tǒng)支持SESSION,這只是工程下例子,別問我為什么不能在你工程下運行。。。。

1、在工程下配置DWR,activeReverseAjaxEnabled屬性為允許反轉(zhuǎn)。web.xml和dwr.xml在同一目錄,因此沒有進(jìn)行dwr.xml目錄引用,如果配置多DWR文件參照config-1,名稱必須已config開頭進(jìn)行配置。

web.xml

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>false</param-value>
</init-param>
<!--<init-param>
<param-name>config-1</param-name>
<param-value>/WEB-INF/dwr/dwr.xml</param-value>
</init-param>-->
<init-param>
<param-name>maxCallCount</param-name>
<param-value>1000</param-value>
</init-param>
<init-param>
<param-name>scriptSessionTimeout</param-name>
<param-value>259200000</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>classes</param-name>
<param-value>java.lang.Object</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2、配置DWR文件,略
dwr.xml

<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://www.getahead.ltd.uk/dwr//dwr20.dtd">
<dwr>
<allow>
<create creator="spring" javascript="TestDwService">
<param name="beanName" value="TestDwr"/>
<include method="jsonForDw"/>
</create>
</allow>
</dwr>
3、實現(xiàn)類,默認(rèn)最后一參數(shù)為HttpServletRequest,只發(fā)現(xiàn)支持5參數(shù)的方法,所以至此回調(diào)函數(shù)參最多支持5個。

TestDwr.java

public void jsonForDw(Integer st,String local,String callFunction,HttpServletRequest request) {
省略了其他操作。
DwrBuntUtil dwrBunt=new DwrBuntUtil();
List dwrList=new ArrayList();
dwrList.add("xxoo");
dwrBunt.bunt(request, local, callFunction, dwrList);
}
4、封裝類,實現(xiàn)推過程,因util.addFunctionCall支持不夠強(qiáng),也沒找到好的解決辦法。。自己便利吧。。

DwrBuntUtil.java

 

package com.vstsoft.csi.util;

import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.proxy.dwr.Util;
/**
* 使用DWR服務(wù)器推技術(shù)實現(xiàn)客戶端訪問超長連接(解決IE下AJAX一小時支持問題)
* @author chenyanji
*
*/
public class DwrBuntUtil {
/**
* DWR實現(xiàn)推技術(shù)
* @param request DWR當(dāng)前請求
* @param local 頁面地址,以工程同目錄真實地址為準(zhǔn),如:/部署名/pages/index.jsp
* @param callFunction 回調(diào)JS方法名稱,如:"count"
* @param parameter 回調(diào)方法參數(shù)數(shù)組,最多支持5個參數(shù),數(shù)組0-4
*/
public void bunt(HttpServletRequest request,String local,String callFunction,List parameter){
try{
Collection scriptSessionsByPage = ServerContextFactory.get(request.getSession().getServletContext()).getScriptSessionsByPage(local);
Util util = new Util(scriptSessionsByPage);
int size=parameter.size();
if(size==5){
util.addFunctionCall(callFunction,parameter.get(0),parameter.get(1),parameter.get(2),parameter.get(3),parameter.get(4));
}else if(size==4){
util.addFunctionCall(callFunction,parameter.get(0),parameter.get(1),parameter.get(2),parameter.get(3));
}else if(size==3){
util.addFunctionCall(callFunction,parameter.get(0),parameter.get(1),parameter.get(2));
}else if(size==2){
util.addFunctionCall(callFunction,parameter.get(0),parameter.get(1));
}else if(size==1){
util.addFunctionCall(callFunction,parameter.get(0));
}else if(size==0){
util.addFunctionCall(callFunction);
}
scriptSessionsByPage=null;
util=null;
}catch(Exception e){
//throw e;
}
}
}
5、jsp引用,1、3包為必須引用,2包如果沒有用到UTIL類可以不引。
testDwr.jsp

<script type='text/javascript' src='/newsx/dwr/engine.js'></script>
<script type='text/javascript' src='/newsx/dwr/util.js'></script>
<script type='text/javascript' src='/newsx/dwr/interface/TestDwService.js'></script>
6、js調(diào)用,最后一參數(shù)默認(rèn)為回掉方法,使用推技術(shù)此方法無效,所以置成NULL 

test.js

function queryDwr(){
setActiveReverseDwr(dwr,true,true);
TestDwService.jsonForDw(0,"/newsx/pages/test/testDwr.jsp","jspalert",null);
}
function jspalert(str){
lovDwStore.loadData(Ext.decode(str));
setActiveReverseDwr(dwr,false,false);
}
7、封裝JS,本項目使用了EXT,沒用的可以自行改造。
common.js

/**
* DWR設(shè)置長連接/取消長連接(dwr,true/false,true/false)
* (dwr對象,長連接控制,MASK控制)
*/
function setActiveReverseDwr(obj,boo,mask){
obj.engine.setActiveReverseAjax(boo);
if(typeof mask != "undefined"){

使用DWR2異步實現(xiàn)服務(wù)器推技術(shù)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于DWR2.0的配置問題
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服