亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

dwr工具類

張軍 8769 0

所有工具類

DWR包含兩個(gè)主要部分:

1. 運(yùn)行在服務(wù)器端的servlet控制器(DwrServlet),它負(fù)責(zé)接收請(qǐng)求,調(diào)用相應(yīng)業(yè)務(wù)邏輯進(jìn)行處理,向客戶端返回響應(yīng)。

2.運(yùn)行在瀏覽器端的JavaScript,它負(fù)責(zé)向服務(wù)器端發(fā)送請(qǐng)求,接收響應(yīng),動(dòng)態(tài)更新頁(yè)面

zj.dwr.util.DwrUtil

package zj.dwr.util;

import java.util.List;

import org.directwebremoting.ScriptSession;
import org.directwebremoting.proxy.dwr.Util;

import zj.dwr.bean.DwrBean;
import zj.dwr.bean.DwrSession;

/**
 * dwr工具類<br>
 * 
 * @version 1.00 (2011/11/08)
 * @author 張軍 {@link <a target=_blank href="http://m.eyofj.com">張軍個(gè)人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class DwrUtil {
	/**
	 * 發(fā)送數(shù)據(jù)至前臺(tái)
	 * 
	 * @param funName
	 *            函數(shù)名
	 * @param value
	 *            函數(shù)值
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 */
	public final static <T> void sendAllMessage(String funName, T value) {
		for (String key : DwrSession.SCRIPT_SESSIONS.keySet()) {
			sendMessage(key, funName, value);
		}
	}

	/**
	 * 向前臺(tái)推送消息
	 * 
	 * @param dwrBean
	 *            dwr參數(shù)
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 */
	public final static <T> void sendAllMessage(DwrBean<T> dwrBean) {
		List<String> funNames = dwrBean.getFunNameList();
		for (String key : DwrSession.SCRIPT_SESSIONS.keySet()) {
			ScriptSession scriptSession = DwrSession.SCRIPT_SESSIONS.get(key);
			if (scriptSession != null) {
				Util util = new Util(scriptSession);
				if (funNames != null && funNames.size() > 0)
					for (String funName : funNames) {
						util.addFunctionCall(funName, dwrBean.getTvalue());
					}
			}
		}
	}

	/**
	 * 向前臺(tái)推送單個(gè)key消息
	 * 
	 * @param key
	 *            注冊(cè)鍵
	 * @param dwrBean
	 *            dwr參數(shù)
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 */
	public final static <T> void sendMessage(String key, DwrBean<T> dwrBean) {
		List<String> funNames = dwrBean.getFunNameList();
		ScriptSession scriptSession = DwrSession.SCRIPT_SESSIONS.get(key);
		if (scriptSession != null) {
			Util util = new Util(scriptSession);
			if (funNames != null && funNames.size() > 0)
				for (String funName : funNames) {
					util.addFunctionCall(funName, dwrBean.getTvalue());
				}
		}
	}

	/**
	 * 向前臺(tái)推送單個(gè)key消息
	 * 
	 * @param key
	 *            注冊(cè)鍵
	 * @param funName
	 *            函數(shù)名
	 * @param value
	 *            函數(shù)值
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 */
	public final static <T> void sendMessage(String key, String funName, T value) {
		ScriptSession scriptSession = DwrSession.SCRIPT_SESSIONS.get(key);
		if (scriptSession != null) {
			Util util = new Util(scriptSession);
			util.addFunctionCall(funName, value);
		}
	}
}

zj.dwr.bean.DwrBean<T>

package zj.dwr.bean;

import java.io.Serializable;
import java.util.List;

/**
 * dwr封裝類<br>
 * 
 * @version 1.00 (2011/11/08)
 * @author 張軍 {@link  <a target=_blank href="http://m.eyofj.com">張軍個(gè)人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class DwrBean<T> implements Serializable {
	private static final long serialVersionUID = 1L;
	private List<String> funNameList;
	private T tvalue;

	/**
	 * 調(diào)用前臺(tái)的函數(shù)名
	 * 
	 * @Description
	 * @author 張軍
	 * @date 2016-8-2 下午9:41:30
	 * @version V1.0
	 * @return 調(diào)用前臺(tái)的函數(shù)名
	 */
	public List<String> getFunNameList() {
		return funNameList;
	}

	/**
	 * 調(diào)用前臺(tái)的函數(shù)名
	 * 
	 * @Description
	 * @param funNameList
	 *           調(diào)用前臺(tái)的函數(shù)名
	 * @author 張軍
	 * @date 2016 下午9:41:30
	 * @modifiyNote
	 * @version 1.0
	 */
	public void setFunNameList(List<String> funNameList) {
		this.funNameList = funNameList;
	}

	/**
	 * 傳給前臺(tái)的值
	 * 
	 * @Description
	 * @author 張軍
	 * @date 2016-8-2 下午9:41:59
	 * @version V1.0
	 * @return 傳給前臺(tái)的值
	 */
	public T getTvalue() {
		return tvalue;
	}

	/**
	 * 傳給前臺(tái)的值
	 * 
	 * @Description
	 * @param tvalue
	 *            傳給前臺(tái)的值
	 * @author 張軍
	 * @date 2016 下午9:41:59
	 * @modifiyNote
	 * @version 1.0
	 */
	public void setTvalue(T tvalue) {
		this.tvalue = tvalue;
	}

}

zj.dwr.bean.DwrSession

package zj.dwr.bean;

import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;

import zj.check.util.CheckUtil;

/**
 * dwr注冊(cè)類<br>
 * 
 * @version 1.00 (2011/11/08)
 * @author 張軍 {@link <a target=_blank href="http://m.eyofj.com">張軍個(gè)人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public final class DwrSession implements Serializable {
	private static final long serialVersionUID = 1L;
	private transient static final Logger log = Logger.getLogger(DwrSession.class);
	/** Dwr內(nèi)存注冊(cè) **/
	public static final Map<String, ScriptSession> SCRIPT_SESSIONS = Collections.synchronizedMap(new HashMap<String, ScriptSession>());

	/**
	 * 注冊(cè)session
	 * 
	 * @param key
	 */
	public final void regScriptSession(String key) {
		try {
			WebContext webContext = WebContextFactory.get();
			/** 獲取頁(yè)面長(zhǎng)連接session */
			ScriptSession scriptSession = webContext.getScriptSession();
			// WebSession webSession = GlobalOperation.getWebSession(webContext.getSession().getId());
			// if (webSession != null) {
			// User user = webSession.getUser();
			// // 用戶工號(hào)+長(zhǎng)連接標(biāo)識(shí)=scriptSession唯一標(biāo)識(shí)
			// // scriptSession保存內(nèi)存中
			// MemoryConstant.ssMapScriptSession.put(key, scriptSession);
			// }

			// // 獲取當(dāng)前頁(yè)面URL,比如/ext3/test_tag.jsp
			// String currentPage = webContext.getCurrentPage();
			// // 獲取所有瀏覽當(dāng)前頁(yè)面的腳本session
			// Collection<ScriptSession> sessions = webContext.getScriptSessionsByPage(currentPage);
			// System.out.println("頁(yè)面數(shù):" + sessions.size());
			if (CheckUtil.isNotNull(key)) {
				SCRIPT_SESSIONS.put(key, scriptSession);
				log.info("注冊(cè)ScriptSession成功【" + SCRIPT_SESSIONS.size() + "】:" + key);
			}
		} catch (Exception e) {
			log.error("注冊(cè)ScriptSession失敗", e);
		}
	}

	/**
	 * 注冊(cè)session
	 * 
	 * @param key
	 */
	public final void removeScriptSession(String key) {
		try {
			SCRIPT_SESSIONS.remove(key);
			log.info("移除ScriptSession成功【" + SCRIPT_SESSIONS.size() + "】:" + key);
		} catch (Exception e) {
			log.error("移除ScriptSession失敗", e);
		}
	}

	/**
	 * 錯(cuò)誤信息
	 * 
	 * @param errorMessage
	 * @param scriptURL
	 * @param lineNumber
	 */
	public final void writeJsError(String errorMessage, String scriptURL, String lineNumber) {
		if (CheckUtil.isNotNull(scriptURL))
			log.error("scriptURL:" + scriptURL);
		if (CheckUtil.isNotNull(errorMessage))
			log.error("errorMessage:" + errorMessage);
		if (CheckUtil.isNotNull(lineNumber))
			log.error("lineNumber:" + lineNumber);
	}
}

dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" 
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
	<allow>
		<create creator="spring" javascript="dwrUtil">
			<param name="beanName" value="dwrUtil" />
		</create>
		<convert converter="bean" match="com.zjsystem.basic.permissions.notices.pageModel.NoticePage" />
		<convert converter="bean" match="com.zjsystem.framework.dwr.bean.DwrMsg" />
		<convert converter="exception" match="java.lang.Exception" />
		<convert converter="bean" match="java.lang.StackTraceElement" />
		<convert converter="bean" match="zj.common.KV" />
	</allow>
</dwr>

總結(jié)

<script type="text/javascript" src="${webRoot }/dwr/engine.js"></script>
<script type="text/javascript" src="${webRoot }/dwr/util.js"></script>
<script type="text/javascript" src="${webRoot }/dwr/interface/dwrUtil.js"></script>

<input type="hidden" class="zj-sid" style="width: 200px" />

<script type="text/javascript" charset="utf-8">
	$(function() {
		/**
		onUnload方法是在關(guān)閉窗口之后執(zhí)行
		onbeforeUnload方法是在關(guān)閉窗口之前執(zhí)行

		window.onbeforeunload= function(event) { return confirm("確定離開(kāi)此頁(yè)面嗎?"); }

		window.onunload = function(event) { return confirm("確定離開(kāi)此頁(yè)面嗎?"); }
		 **/
		dwr.engine.setActiveReverseAjax(true);
		var uuid = "zj-" + jq.UUID();
		dwrUtil.regScriptSession(uuid);
		$(".zj-sid").val(uuid);
	});
	//退出時(shí)刪除
	window.onbeforeunload = function(event) {
		//刪除后臺(tái)session
		dwrUtil.removeScriptSession($(".zj-sid").val());
	}
</script>



// 發(fā)送數(shù)據(jù)至前臺(tái)
for (String key : DwrSession.SCRIPT_SESSIONS.keySet()) {
	if (key.startsWith("zj-")) {
		ScriptSession scriptSession = DwrSession.SCRIPT_SESSIONS.get(key);
		if (scriptSession != null) {
			Util util = new Util(scriptSession);
			util.addFunctionCall("zj_dwr", lkv);
		}
	}
}



web.xml
----------------------------------
<!-- Servlet add by zhangjun start -->
<servlet>
	<servlet-name>dwr-invoker</servlet-name>
	<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
	<!-- 前臺(tái)輸入地址是否顯示 -->
	<init-param>
		<param-name>debug</param-name>
		<param-value>false</param-value>
	</init-param>
	<init-param>
		<param-name>pollAndCometEnabled</param-name>
		<param-value>true</param-value>
	</init-param>
	<init-param>
		<description>使用服務(wù)器推技術(shù)(反轉(zhuǎn)AJAX)</description>
		<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>
	<init-param>
		<param-name>scriptSessionTimeout</param-name>
		<param-value>21600000</param-value>
	</init-param>
	<init-param>
		<param-name>maxWaitAfterWrite</param-name>
		<param-value>100</param-value>
	</init-param>
	<init-param>
		<param-name>crossDomainSessionSecurity</param-name>
		<param-value>false</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 add by zhangjun start -->
----------------------------------

WEB-INF/dwr.xml
----------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" 
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
	<allow>
		<create creator="spring" javascript="dwrUtil">
			<param name="beanName" value="dwrUtil" />
		</create>
		<convert converter="bean" match="com.zjsystem.basic.permissions.notices.pageModel.NoticePage" />
		<convert converter="bean" match="com.zjsystem.framework.dwr.bean.DwrMsg" />
		<convert converter="exception" match="java.lang.Exception" />
		<convert converter="bean" match="java.lang.StackTraceElement" />
		<convert converter="bean" match="zj.common.KV" />
	</allow>
</dwr>
----------------------------------	



更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 色激情综合 | 中文字幕一区二区三区在线播放 | 在线日韩中文字幕 | 国产aaa级一级毛片 国产aaa毛片 | 男人天堂成人 | 波霸欧美性猛交xxxxxx | 四虎看黄 | 99福利| 久久国产精品岛国搬运工 | 国产日韩高清一区二区三区 | 国产小福利 | 国产精品久久久久久影视 | 国产四区| 奇米影视一区 | 亚洲第一中文字幕 | 免费国产一区二区三区四区 | 天天操夜夜嗨 | 天天躁日日躁成人字幕aⅴ 天天躁日日躁狠狠躁黑人躁 | 欧美专区亚洲专区 | 中文字幕欧美在线观看 | 天天摸天天操免费播放小视频 | 国产瑟瑟| 热99这里有精品综合久久 | 国产激情久久久久影 | 久综合网| 香蕉久久一区二区三区 | 亚洲高清在线视频 | 久久精品国产精品青草不卡 | 老外黑人欧美一级毛片 | 97在线播放视频 | 伊人网综合在线视频 | 国产欧美精品一区二区三区–老狼 | 亚洲美色综合天天久久综合精品 | 亚洲高清一区二区三区久久 | www.色综合 | 亚洲第一视频在线播放 | 天天做天天爱夜夜爽毛片毛片 | 国产精品深爱在线 | 亚洲综合国产一区二区三区 | 999精品在线视频 | 一区二区三区免费在线视频 |