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

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

系統(tǒng) 1895 0

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

1、DWR 介紹

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

?

dwr.xml

?

    <dwr>
	<!-- 僅當(dāng)需要擴(kuò)展DWR時(shí)才需要,這里不做例子,等深入分析后才做介紹 -->
	<!--  
		<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ù)簡(jiǎn)單分析:

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

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

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

<convert>標(biāo)簽

?? 我們需要確認(rèn)所有的參數(shù)能被轉(zhuǎn)換。 許多JDK提供的類型使你能夠使用,但是你如果要轉(zhuǎn)換你自己的代碼,就必須告訴DWR。一般是指JavaBean 的參數(shù)需要一個(gè)<convert…>標(biāo)簽作為入口。?
<signatures>標(biāo)簽
?? DWR使用反射機(jī)制在轉(zhuǎn)換過程中找到它應(yīng)該使用的類型。有時(shí)候類型的信息無法獲得,在這種情況下你要在此處用方法簽名給予暗示。
?? 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>
		<!--這個(gè)屬性必須設(shè)定 -->
		<script type="text/javascript" src="/dwr-dome/dwr/engine.js"></script>
		<!--當(dāng)用到dwr 集成的javascript 工具類時(shí)要設(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對(duì) DWR非常重要,因?yàn)樗怯脕磙D(zhuǎn)換來至動(dòng)態(tài)生成的接口的javascript 函數(shù)調(diào)用的,所以只要用到DWR的地方就需要它。

util.js文件 ?

??? util.js包含了一些工具函數(shù)來幫助你用javascript 數(shù)據(jù)(例如從服務(wù)器返回的數(shù)據(jù))來更新你的 web頁面。你可以在DWR以外使用它,因?yàn)樗灰蕾囉贒WR的其他部分。你可以下載整個(gè)DWR或者單獨(dú)下載.?

??? 這個(gè)工具類能使dwr 更加方便的使用,具體的函數(shù)分析,請(qǐng)參考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;
}
  

?

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

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

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

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

?

實(shí)際的運(yùn)行結(jié)果圖:



?

?

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

?

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

1、dwr2.05 中除了加入dwr.jar 還必須加入commons-logging.jar,不然會(huì)報(bào)錯(cuò)。。

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號(hào)聯(lián)系: 360901061

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 精品国产一区二区三区久久 | 久久久这里只有精品加勒比 | 国产日韩精品视频一区二区三区 | 欧洲一区在线观看 | 久久视频在线免费观看 | 精品美女 | 久久在线中文字幕 | 暴劫倾情无删减在线播放 | 真人实干一级毛片aa免费 | 久久精品这里精品 | 欧美亚洲一区二区三区四 | 久久久91精品国产一区二区三区 | 久久国产精品高清一区二区三区 | 国产亚洲精品久久久久久小说 | 精品久久影院 | 久久天堂一区二区三区 | 免费黄色小视频在线观看 | 99热久久这里只有精品2010 | 久久久久久a亚洲欧洲aⅴ | 亚洲黄页 | 日本一区二区三区久久 | 精品免费视在线视频观看 | 2021最新久久久视精品爱 | 久久99国产综合色 | 日韩性网| 成人免费久久精品国产片久久影院 | 日韩久久精品一区二区三区 | 国产 欧美 日产中文 | 综合亚洲精品一区二区三区 | 亚洲国产精品第一区二区三区 | 国产91页 | 国产精品探花一区在线观看 | 欧美日韩亚洲无线码在线观看 | 伊人久久综合热青草 | 亚洲一区日韩 | 亚洲国产九九精品一区二区 | 九九国产 | 久久久伊人影院 | 91亚洲精品 | 99热这里只有精品免费 | 久久两性 |