日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

DWR中各種java方法的調(diào)用

瀏覽:130日期:2024-03-04 09:15:35

DWR是一個(gè)框架,簡(jiǎn)單的說(shuō)就是能夠在javascript直接調(diào)用java方法,而不必去寫(xiě)一大堆的javascript代碼。它的實(shí)現(xiàn)是基于ajax的,可以實(shí)現(xiàn)無(wú)刷新效果。

網(wǎng)上有不少DWR的例子,但大都只是某種方法的調(diào)用,本文只在使用層面上介紹DWR,并不涉更多的技術(shù)與設(shè)計(jì),其目的是讓初學(xué)者能夠很快的學(xué)會(huì)各種java方法在javascript中是如何調(diào)用的。

本文以DWR 1.1 為基礎(chǔ),對(duì)于DWR 2.0,因?yàn)檫€沒(méi)有正式發(fā)布版,故不做介紹。

一、dwr配置篇之web.xml 1 、最小配置<servlet> ; <servlet-name>dwr-invoker</servlet-name> ; <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> </servlet> <servlet-mapping> ; <servlet-name>dwr-invoker</servlet-name> ; <url-pattern>/dwr/*</url-pattern> </servlet-mapping> 2、當(dāng)我們想看DWR自動(dòng)生成的測(cè)試頁(yè)(Using debug/test mode)時(shí),可在servlet配置中加上<init-param> ; <param-name>debug</param-name> ; <param-value>true</param-value> </init-param>這個(gè)參數(shù)DWR默認(rèn)是false。如果選擇true,我們可以通過(guò)http://localhost:port/app/dwr看到你部署的每個(gè)DWR class。并且可以測(cè)試java代碼的每個(gè)方法是否運(yùn)行正常。為了安全考慮,在正式環(huán)境下你一定把這個(gè)參數(shù)設(shè)為false。3、多個(gè)dwr.xml文件的配置可能有幾種情況,我們一一列舉。一個(gè)servlet,多個(gè)dwr.xml配置文件;多個(gè)servlet,每個(gè)servlet對(duì)應(yīng)一個(gè)或多個(gè)dwr.xml配置文件。3.1、一個(gè)servlet,多個(gè)dwr.xml配置文件<servlet>; ; <servlet-name>dwr-invoker</servlet-name>; ; <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>; ; <init-param>; ; ; <param-name>config-1</param-name>; ; ; <param-value>WEB-INF/dwr1.xml</param-value>; ; </init-param>; ; <init-param>; ; ; <param-name>config-2</param-name>; ; ; <param-value>WEB-INF/dwr2.xml</param-value>; ; </init-param></servlet>在這種配置下,param-name的值必須以config開(kāi)頭。param-name可以有>=0個(gè)。如果沒(méi)有param-name,那么將會(huì)讀取WEB-INF/dwr.xml。如果有大于零個(gè)param-name,那么WEB-INF/dwr.xml文件將不會(huì)被讀取。3.2 、多個(gè) servlet ,每個(gè) servlet 對(duì)應(yīng)一個(gè)或多個(gè) dwr.xml <servlet> ; ;<servlet-name>dwr-invoker</servlet-name> ; ; <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> </servlet> <servlet> ; ;<servlet-name>dwr-invoker1</servlet-name> ; ;<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> ; ;<init-param> ; ; ;<param-name>config-admin</param-name> ; ; ;<param-value>WEB-INF/dwr1.xml</param-value> ; ;</init-param> ; ;<init-param> ; ; ;<param-name>debug</param-name> ; ; ;<param-value>true</param-value> ; ;</init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> ; ;<url-pattern>/dwr/*</url-pattern> </servlet-mapping> <servlet-mapping> ; ;<servlet-name>dwr-invoker1</servlet-name> ; ;<url-pattern>/dwr1/*</url-pattern> </servlet-mapping>在這種情況下,我們可以根據(jù) J2EE security 來(lái)控制權(quán)限,針對(duì)不同 url, 加不同的角色。二、dwr使用篇 1 、調(diào)用沒(méi)有返回值和參數(shù)的 Java 方法 1.1、dwr.xml的配置<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod1"/></create></allow></dwr><allow> 標(biāo)簽中包括可以暴露給 javascript 訪問(wèn)的東西。<create> 標(biāo)簽中指定 javascript 中可以訪問(wèn)的 Java 類,并定義 DWR 應(yīng)當(dāng)如何獲得要進(jìn)行遠(yuǎn)程的類的實(shí)例。 creator="new" 屬性指定 Java 類實(shí)例的生成方式, new 意味著 DWR 應(yīng)當(dāng)調(diào)用類的默認(rèn)構(gòu)造函數(shù)來(lái)獲得實(shí)例,其他的還有 spring 方式,通過(guò)與 IOC 容器 Spring 進(jìn)行集成來(lái)獲得實(shí)例等等。 javascript=" testClass " 屬性指定 javascript代碼訪問(wèn)對(duì)象時(shí)使用的名稱。<param> 標(biāo)簽指定要公開(kāi)給 javascript 的 Java 類名。<include> 標(biāo)簽指定要公開(kāi)給 javascript 的方法。不指定的話就公開(kāi)所有方法。<exclude> 標(biāo)簽指定要防止被訪問(wèn)的方法。1.2、javascript中調(diào)用首先,引入 javascript 腳本<script src='http://m.b3g6.com/bcjs/dwr/interface/ testClass.js'></script><script src='http://m.b3g6.com/bcjs/dwr/engine.js'></script><script src='http://m.b3g6.com/bcjs/dwr/util.js'></script>其中 TestClass.js 是 dwr 根據(jù)配置文件自動(dòng)生成的, engine.js 和 util.js 是 dwr 自帶的腳本文件。其次,編寫(xiě)調(diào)用 Java 方法的 javascript 函數(shù)Function callTestMethod1(){ testClass.testMethod1();}2 、調(diào)用有簡(jiǎn)單返回值的 Java 方法 2.1、dwr.xml的配置配置同1.1<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod2"/></create></allow></dwr>2.2、javascript中調(diào)用首先,引入 javascript 腳本其次,編寫(xiě)調(diào)用 Java 方法的 javascript 函數(shù)和接收返回值的回調(diào)函數(shù)Function callTestMethod2(){ testClass.testMethod2(callBackFortestMethod2);}Function callBackFortestMethod2(data){ // 其中 date 接收方法的返回值 // 可以在這里對(duì)返回值進(jìn)行處理和顯示等等alert("the return value is " + data);}其中 callBackFortestMethod2 是接收返回值的回調(diào)函數(shù)3 、調(diào)用有簡(jiǎn)單參數(shù)的 Java 方法 3.1、dwr.xml的配置配置同1.1<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod3"/></create></allow></dwr>3.2、javascript中調(diào)用首先,引入 javascript 腳本其次,編寫(xiě)調(diào)用 Java 方法的 javascript 函數(shù)Function callTestMethod3(){ // 定義要傳到 Java 方法中的參數(shù) var data; // 構(gòu)造參數(shù) data = “test String; testClass.testMethod3(data);}4 、調(diào)用返回 JavaBean Java 方法 4.1、dwr.xml的配置<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod4"/></create><convert converter="bean" match=" "com.dwr.TestBean "> ;;;;<param name="include" value="username,password" /> </convert> </allow></dwr><creator> 標(biāo)簽負(fù)責(zé)公開(kāi)用于 Web 遠(yuǎn)程的類和類的方法, <convertor> 標(biāo)簽則負(fù)責(zé)這些方法的參數(shù)和返回類型。 convert 元素的作用是告訴 DWR 在服務(wù)器端 Java 對(duì)象表示和序列化的 JavaScript 之間如何轉(zhuǎn)換數(shù)據(jù)類型。 DWR 自動(dòng)地在 Java 和 JavaScript 表示之間調(diào)整簡(jiǎn)單數(shù)據(jù)類型。這些類型包括 Java 原生類型和它們各自的封裝類表示,還有 String 、 Date 、數(shù)組和集合類型。 DWR 也能把 JavaBean 轉(zhuǎn)換成 JavaScript 表示,但是出于安全性的原因,要求顯式的配置, <convertor> 標(biāo)簽就是完成此功能的。 converter="bean" 屬性指定轉(zhuǎn)換的方式采用 JavaBean 命名規(guī)范, match=""com.dwr.TestBean" 屬性指定要轉(zhuǎn)換的 javabean 名稱, <param> 標(biāo)簽指定要轉(zhuǎn)換的 JavaBean 屬性。4.2 、javascript中調(diào)用首先,引入 javascript 腳本其次,編寫(xiě)調(diào)用 Java 方法的 javascript 函數(shù)和接收返回值的回調(diào)函數(shù)Function callTestMethod4(){ testClass.testMethod4(callBackFortestMethod4);}Function callBackFortestMethod4(data){ // 其中 date 接收方法的返回值// 對(duì)于 JavaBean 返回值,有兩種方式處理 // 不知道屬性名稱時(shí),使用如下方法 for(var property in data){ alert("property:"+property); alert(property+":"+data[property]); }// 知道屬性名稱時(shí),使用如下方法 alert(data.username); alert(data.password);}其中 callBackFortestMethod4 是接收返回值的回調(diào)函數(shù)5 、調(diào)用有 JavaBean 參數(shù)的 Java 方法 5.1、dwr.xml的配置配置同4.1<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod5"/></create><convert converter="bean" match=" com.dwr.TestBean "> ;;;;<param name="include" value="username,password" /> </convert> </allow></dwr>5.2 、javascript中調(diào)用首先,引入 javascript 腳本其次,編寫(xiě)調(diào)用 Java 方法的 javascript 函數(shù)Function callTestMethod5(){ // 定義要傳到 Java 方法中的參數(shù) var data; // 構(gòu)造參數(shù), date 實(shí)際上是一個(gè) object data = { username:"user", password:"password" } testClass.testMethod5(data);}6 、調(diào)用返回 List 、 Set 或者 Map Java 方法 6.1、dwr.xml的配置配置同4.1<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod6"/></create><convert converter="bean" match= "com.dwr.TestBean "><param name="include" value="username,password" /></convert></allow></dwr>注意:如果 List 、 Set 或者 Map 中的元素均為簡(jiǎn)單類型(包括其封裝類)或 String 、 Date 、數(shù)組和集合類型,則不需要<convert>標(biāo)簽。6.2 、javascript中調(diào)用(以返回List為例,List的元素為TestBean)首先,引入 javascript 腳本其次,編寫(xiě)調(diào)用 Java 方法的 javascript 函數(shù)和接收返回值的回調(diào)函數(shù)Function callTestMethod6(){ testClass.testMethod6(callBackFortestMethod6);}Function callBackFortestMethod6(data){ // 其中 date 接收方法的返回值// 對(duì)于 JavaBean 返回值,有兩種方式處理 // 不知道屬性名稱時(shí),使用如下方法 for(var i=0;i<data.length;i++){for(var property in data){ ;alert("property:"+property); ;alert(property+":"+data[property]); ;}}// 知道屬性名稱時(shí),使用如下方法for(var i=0;i<data.length;i++){ ;alert(data.username); ;alert(data.password);}}7 、調(diào)用有 List Set 或者 Map 參數(shù)的 Java 方法 7.1、dwr.xml的配置<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod7"/></create><convert converter="bean" match= "com.dwr.TestBean "><param name="include" value="username,password" /></convert></allow><signatures> <![CDATA[ import Java.util.List; import com.dwr.TestClass; import com.dwr.TestBean; TestClass.testMethod7(List<TestBean>); ]]> </signatures> </dwr><signatures> 標(biāo)簽是用來(lái)聲明 Java 方法中 List 、 Set 或者 Map 參數(shù)所包含的確切類,以便 Java 代碼作出判斷。7.2 、javascript中調(diào)用(以返回List為例,List的元素為TestBean)首先,引入 javascript 腳本其次,編寫(xiě)調(diào)用 Java 方法的 javascript 函數(shù)Function callTestMethod7(){// 定義要傳到 Java 方法中的參數(shù) var data; // 構(gòu)造參數(shù), date 實(shí)際上是一個(gè) object 數(shù)組,即數(shù)組的每個(gè)元素均為 objectdata = [ ;{ ;username:"user1", ;password:"password2" ;}, ;{ ;username:"user2", ;password:" password2" ;} ;]; testClass.testMethod7(data);}注意:1、 對(duì)于第 6 種情況,如果 Java 方法的返回值為 Map ,則在接收該返回值的 javascript 回調(diào)函數(shù)中如下處理:function callBackFortestMethod(data){ // 其中 date 接收方法的返回值 for(var property in data){ var bean = data[property]; alert(bean.username); alert(bean.password); }}2、 對(duì)于第 7 種情況,如果 Java 的方法的參數(shù)為 Map (假設(shè)其 key 為 String , value 為 TestBean ),則在調(diào)用該方法的 javascript 函數(shù)中用如下方法構(gòu)造要傳遞的參數(shù):function callTestMethod (){ // 定義要傳到 Java 方法中的參數(shù) var data; // 構(gòu)造參數(shù), date 實(shí)際上是一個(gè) object ,其屬性名為 Map 的 key ,屬性值為 Map 的 value data = { "key1":{ username:"user1", password:"password2" }, "key2":{ username:"user2", password:" password2" } }; testClass.testMethod(data);}并且在 dwr.xml 中增加如下的配置段<signatures> <![CDATA[ import Java.util.List; import com.dwr.TestClass; import com.dwr.TestBean; TestClass.testMethod7(Map<String,TestBean>); ]]> </signatures> 3、 由以上可以發(fā)現(xiàn),對(duì)于 Java 方法的返回值為 List(Set) 的情況, DWR 將其轉(zhuǎn)化為 Object 數(shù)組,傳遞個(gè) javascript ;對(duì)于 Java 方法的返回值為 Map 的情況, DWR 將其轉(zhuǎn)化為一個(gè) Object ,其中 Object 的屬性為原 Map 的 key 值,屬性值為原 Map 相應(yīng)的 value 值。4、 如果 Java 方法的參數(shù)為 List(Set) 和 Map 的情況, javascript 中也要根據(jù) 3 種所說(shuō),構(gòu)造相應(yīng)的 javascript 數(shù)據(jù)來(lái)傳遞到 Java 中。
標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费精品国产的网站免费观看| 精品国产一区二区三区2021| 国产精品香蕉| 日韩美女精品| 日韩三级视频| 日韩精品视频一区二区三区| 中文字幕视频精品一区二区三区| 日韩制服丝袜先锋影音| 国产精品7m凸凹视频分类| 国精品一区二区| 亚洲日本在线观看视频| 中文字幕在线视频久| 国产一区亚洲| 黑森林国产精品av| 日韩88av| 日韩久久视频| 欧美成人高清| 国产精品最新| 91成人小视频| 久久夜夜操妹子| 久久中文字幕导航| 蘑菇福利视频一区播放| 亚洲涩涩在线| 亚洲精品乱码久久久久久蜜桃麻豆| 国产日韩欧美一区在线| 国产精品九九| 日韩精品乱码av一区二区| 国产一区二区中文| 另类中文字幕国产精品| 精品视频99| 日韩精品一区二区三区中文在线| 亚洲成人精品| 日韩欧美少妇| 高清久久精品| 亚洲人成在线网站| 日韩欧美自拍| 九色精品91| 国产亚洲综合精品| 色综合www| 日韩高清电影免费| 亚洲一区二区成人| 麻豆精品91| 久久av网站| 成人羞羞视频在线看网址| 亚洲主播在线| 久久福利在线| 91九色精品国产一区二区| 日韩欧美中文字幕一区二区三区 | 国产精品88久久久久久| 日韩精品一级二级| 亚洲精品高潮| 911亚洲精品| 欧洲精品一区二区三区| 少妇久久久久| 欧美一区91| 日本在线精品| 日本午夜精品久久久| 国产成人精品一区二区免费看京| 欧美1区2区3区| 国产精品视频一区视频二区| 欧洲亚洲一区二区三区| 亚洲精品成人一区| 亚洲综合在线电影| 欧美视频二区| 日韩视频不卡| 久久av免费看| 蜜臀av在线播放一区二区三区| 免费看一区二区三区| 欧美特黄一区| 久久精品国产久精国产爱| 日韩视频不卡| а√天堂8资源在线| 亚洲精品韩国| 欧美日一区二区| 国产精品夜夜夜| 免费一区二区视频| 欧美黄色网页| 国产精品久久久久av蜜臀| 午夜久久美女| av高清不卡| 日本特黄久久久高潮| 午夜久久免费观看| 国产一区福利| 久久精品 人人爱| 久久国产高清| 免费观看不卡av| 国产不卡人人| 久久久国产精品网站| 日韩三区四区| 日韩精品一二三| 久久精品国产www456c0m| 久久久亚洲欧洲日产| 亚洲精品黄色| 亚洲一区二区三区四区五区午夜| 午夜久久中文| 欧美精品1区| 日韩精品免费一区二区夜夜嗨 | 亚洲精品系列| 亚洲综合不卡| 欧美不卡在线| 久久影院一区| 91中文字幕精品永久在线| 国产精品最新| 久久精品 人人爱| 日本成人在线不卡视频| 蜜桃91丨九色丨蝌蚪91桃色| 9国产精品视频| 欧美a级一区| 日韩综合在线| 国产一区二区三区久久久久久久久| 日本免费新一区视频| 亚洲综合电影一区二区三区| 午夜欧美在线| 亚洲精品1区| 在线视频亚洲| 99riav国产精品| 亚洲永久字幕| 久久国产精品久久w女人spa| 在线综合欧美| 性色一区二区| 噜噜噜躁狠狠躁狠狠精品视频| 欧洲毛片在线视频免费观看| 亚洲午夜一级| 欧美日韩在线网站| 亚洲天堂成人| 欧美精选一区二区三区| 国产高清久久| 丝袜亚洲另类欧美| 丝袜美腿高跟呻吟高潮一区| 天堂av在线一区| 免费日韩视频| 日韩激情精品| 国产精品麻豆成人av电影艾秋| 国产精品一区二区三区四区在线观看 | 国产suv精品一区二区四区视频| 久久久久伊人| 日本欧美在线| 国产综合婷婷| 国产精品久久久久久久久久齐齐| 国产毛片精品| 精品日产乱码久久久久久仙踪林| 在线手机中文字幕| 丝袜美腿成人在线| 久久久天天操| 悠悠资源网久久精品| 六月天综合网| 91精品国产自产精品男人的天堂| 日韩高清欧美激情| 亚洲资源在线| 国产亚洲电影| 日韩av二区| 婷婷综合在线| 日韩综合小视频| 国产精品久久久久久久久久白浆| 国产一区二区三区亚洲| 久久美女精品| 蜜臀a∨国产成人精品| 日韩和欧美一区二区| 久久伊人久久| 欧美日韩中文字幕一区二区三区| 免费欧美在线视频| 国产欧美日韩在线一区二区| 精品72久久久久中文字幕| 夜鲁夜鲁夜鲁视频在线播放| 不卡中文一二三区| 青青伊人久久| 粉嫩av一区二区三区四区五区 | 欧美亚洲国产激情| 蜜桃视频一区二区三区在线观看| 国产精品久久久久久久久久齐齐 | 日韩av福利| 久久99伊人| 久久av综合| 婷婷激情综合| 欧美在线看片| 婷婷综合六月| 日韩三级视频| 国产精品久久久久av电视剧| 免费视频一区二区| 国产成人精品一区二区三区免费| 九一国产精品| 国产精品一区二区av日韩在线| 播放一区二区| 日韩精品免费视频人成| 午夜欧美巨大性欧美巨大| 亚洲精选久久| 欧美日韩视频网站| 亚欧洲精品视频在线观看| 日本а中文在线天堂| 日韩高清在线不卡| 国产在线|日韩| 青青草视频一区| 欧美日韩国产免费观看| 欧美激情一区| 亚洲一区导航| 91亚洲人成网污www| 日日摸夜夜添夜夜添国产精品| 蜜臀国产一区| 国产精品亚洲综合在线观看| 先锋影音国产一区|