欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

DWR 學(xué)習(xí)筆記

系統(tǒng) 1704 0

下面是從一個實例的構(gòu)建過程進(jìn)行分析。

1、DWR 介紹

?????DWR是一個可以允許你去創(chuàng)建AJAX WEB 站點的JAVA 開源庫。它可以讓你在瀏覽器中的Javascript代碼調(diào)用Web服務(wù)器上的Java 代碼,就像在Java代碼就在瀏覽器中一樣。?
???? DWR包含 2個主要部分:?
(1) 一個運行在服務(wù)器端的Java Servlet,它處理請求并且向瀏覽器發(fā)回響應(yīng)。
(2) 運行在瀏覽器端的JavaScript,它發(fā)送請求而且還能動態(tài)更新網(wǎng)頁。?
???? DWR工作原理是通過動態(tài)把Java類生成為Javascript。它的代碼就像Ajax魔法一樣,你感覺調(diào)用就像發(fā)生在瀏覽器端,但是實際上代碼調(diào)用發(fā)生在服務(wù)器端,DWR負(fù)責(zé)數(shù)據(jù)的傳遞和轉(zhuǎn)換。這種從Java 到JavaScript的遠(yuǎn)程調(diào)用功能的方式使DWR用起來有種非常像RMI或者SOAP的常規(guī)RPC機制,而且DWR的優(yōu)點在于不需要任何的網(wǎng)頁瀏覽器插件就能運行在網(wǎng)頁上。

?

2、DWR 配置文件說明

?

web.xml

      <servlet>
  	<servlet-name>dwr</servlet-name>
 <!-- 如果是dwr1.x 的話,下面的class為:uk.ltd.getahead.dwr.DWRServlet -->
  	<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  <!-- 在開發(fā)期間,把這個設(shè)成true,有助于調(diào)試,可通過 http://localhost/XXXX(應(yīng)用空間名)/dwr 進(jìn)行查看 --> 	
  	<init-param>
  	 <param-name>debug</param-name>
  	 <param-value>true</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dwr</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
  

?關(guān)于這個配置文件,沒什么好說的,等深入了解后再做解析。。

?

dwr.xml

?

    <dwr>
	<!-- 僅當(dāng)需要擴展DWR時才需要,這里不做例子,等深入分析后才做介紹 -->
	<!--  
		<init>
		<creator id="..." class="..." />
		<converter id="..." class="..." />
		</init>
	-->
	<allow>
		<create javascript="UserDao" creator="new" scope="session">
			<param name="class" value="user.UserDao"></param>
			<!-- 也可以設(shè)置不可訪問的方法
				<exclude method="xxx"/>
			-->
			<!-- 設(shè)置可訪問的方法 -->
			<include method="say" />
			<include method="getUser" />
			<include method="setDates" />
		</create>
		<!-- 聲明的javascript 調(diào)用Bean-->
		<convert match="user.User" converter="bean">
			<param name="include" value="id,name"></param>
		</convert>
	</allow>
	<!-- 使DWR能確定集合中存放的數(shù)據(jù)類型 -->
	<signatures>
		<![CDATA[
	  	import java.util.Date;
	  	public void setDates(List<Date> dates);
	  ]]>
	</signatures>
</dwr>
  

?

配置的參數(shù)簡單分析:

(詳細(xì)分析,請參考dwr 文檔)

?<init>標(biāo)簽
這個初始化部分申明被用來創(chuàng)建遠(yuǎn)程beans 而且這個類能被用來以某種過程轉(zhuǎn)換。大多數(shù)例子你將不需要
用它,如果你想去定義一個新的Creator 或者Converter,就要在此被申明。??

<allow>標(biāo)簽
allow部分定義了DWR能夠創(chuàng)建和轉(zhuǎn)換的類。?
<create> 標(biāo)簽
每一個在類中被調(diào)用的方法需要一個<create …>有若干類型的creator,使用“new”關(guān)鍵字或者Spring 框架等。???

<convert>標(biāo)簽

?? 我們需要確認(rèn)所有的參數(shù)能被轉(zhuǎn)換。 許多JDK提供的類型使你能夠使用,但是你如果要轉(zhuǎn)換你自己的代碼,就必須告訴DWR。一般是指JavaBean 的參數(shù)需要一個<convert…>標(biāo)簽作為入口。?
<signatures>標(biāo)簽
?? DWR使用反射機制在轉(zhuǎn)換過程中找到它應(yīng)該使用的類型。有時候類型的信息無法獲得,在這種情況下你要在此處用方法簽名給予暗示。
?? signatures段使DWR能確定集合中存放的數(shù)據(jù)類型。例如下面的定義中我們無法知道list中存放的是什么類型。

?

3、Html?分析

?

    <html>
	<head>
		<title>dwr-demo</title>
		<!--
		javascript 能訪問的類都要在此設(shè)定,命名以javascript 屬性為準(zhǔn),結(jié)合dwr.xml
		<create javascript="UserDao" creator="new" scope="session">
		 -->
		<script type="text/javascript" src="/dwr-dome/dwr/interface/UserDao.js"></script>
		<!--這個屬性必須設(shè)定 -->
		<script type="text/javascript" src="/dwr-dome/dwr/engine.js"></script>
		<!--當(dāng)用到dwr 集成的javascript 工具類時要設(shè)定 -->
		<script type="text/javascript" src="/dwr-dome/dwr/util.js"></script>
		<!-- 外部的javascript 文件 -->
		<script type="text/javascript" src="/dwr-dome/user.js"></script>
	</head>
	<body>
		<form id="userform">
			<input type="text" id="name" name="name">
			<input type="button" onclick="say()" value="say">
			<input type="button" onclick="getuser()" value="getuser">
			<input type="button" onclick="setdates()" value="setdates">
		</form>
		<font color="red"><div id="say"></div>
		</font>
		<font color="red"><div id="getuser"></div>
		</font>
		<font color="red"><div id="setdates"></div>
		</font>
	</body>
</html>
  

?

?

分析:

engine.js文件

??? engine.js對 DWR非常重要,因為它是用來轉(zhuǎn)換來至動態(tài)生成的接口的javascript 函數(shù)調(diào)用的,所以只要用到DWR的地方就需要它。

util.js文件 ?

??? util.js包含了一些工具函數(shù)來幫助你用javascript 數(shù)據(jù)(例如從服務(wù)器返回的數(shù)據(jù))來更新你的 web頁面。你可以在DWR以外使用它,因為它不依賴于DWR的其他部分。你可以下載整個DWR或者單獨下載.?

??? 這個工具類能使dwr 更加方便的使用,具體的函數(shù)分析,請參考dwr文檔。

?

4、外面的js 文件(user.js)

    function say(){
	var name=$("name").value;
	UserDao.say(name,callback);
}

function callback(data){
	$("say").innerHTML=data;
}

function getuser(){
	UserDao.getUser(calluser);
}
function calluser(user){
	var info="you id is "+user.id+" .you name is "+user.name;
	$("getuser").innerHTML=info;
}

function setdates(){
	var list=[new Date(),new Date()];
	UserDao.setDates(list,calldate);
}
function calldate(datestring){
	$("setdates").innerHTML=datestring;
}
  

?

? 這個文件主要應(yīng)用到了dwr 的util.js 的工具類。還有關(guān)于回調(diào)函數(shù)這兩方面比較重要。

關(guān)于回調(diào)函數(shù),主要是在java 類函數(shù)的基礎(chǔ)上,加多個參數(shù),

如在java 中的函數(shù):UserDao.say(name); 在javascript的函數(shù)(包括回調(diào)):UserDao.say(name,callback);

有篇文章分析的很多,請參考: http://blog.sina.com.cn/s/blog_496aa28601000738.html

?

實際的運行結(jié)果圖:



?

?

其他的文件沒什么可分析的,請參考下面給出的源碼。

?

關(guān)于在做這個實例的時候遇到的幾個問題:

1、dwr2.05 中除了加入dwr.jar 還必須加入commons-logging.jar,不然會報錯。。

2、在dwr.xml 配置中 <create javascript="UserDao" creator="new" scope="session">
scope 應(yīng)設(shè)為session,在getuser中才能取得User 的屬性值。

?

?

下面給出一些參考的網(wǎng)站:

DWR 中文文檔 : http://wiki.javascud.org/display/dwrcn/Home

DWR官方網(wǎng)站: http://directwebremoting.org/

DWR 學(xué)習(xí)筆記


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 最近最新中文字幕 | 亚洲国产视频网站 | 国产成人精品一区二区仙踪林 | 免费在线公开视频 | 嫩草影院在线看 | 亚洲第五色综合网 | 免费高清av | 亚洲精品不卡 | 久久精品国产99久久久古代 | 欧美在线不卡视频 | 成人禁在线观看网站 | 天天看天天爽天天摸天天添 | 嫩草影院网影院在线 | 免费观看一级毛片 | 亚洲综合精品 | 五月天小说网 | 久久99热只有视精品6国产 | 婷婷综合激情五月中文字幕 | 久久精品视频免费 | 成年人在线观看 | 色情女教师3波多野结衣 | 91精品国产闺蜜国产在线 | 黄色三级视频网站 | 四虎影视最新网站在线播放 | 国产网站在线播放 | 欧美黑人伦理 | 国产精品19禁在线观看2021 | 日韩一区二区视频 | 国产这里只有精品 | 免费看污成人午夜网站 | 久草成人在线 | 九九久久国产精品大片 | 亚洲精品1区 | 国产成人在线视频 | 中文字幕一区在线观看视频 | 欧美高清免费 | 国产孰妇精品AV片国产m3u8 | 国内成人啪啪网站 | 国产免费福利网站 | 亚洲午夜大片 | 荷兰欧美一级毛片 |