用DWR
創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)全網(wǎng)整合營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、臨川網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為臨川等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
它包含兩個(gè)主要的部分:允首判許JavaScript從WEB服務(wù)器上一個(gè)遵循了AJAX原則的Servlet中獲取數(shù)據(jù).另外一方面一個(gè)JavaScript庫(kù)可以幫助網(wǎng)站開(kāi)發(fā)人員輕松地利用獲取的數(shù)據(jù)來(lái)動(dòng)態(tài)改變網(wǎng)頁(yè)的內(nèi)容.
DWR采取了一個(gè)類(lèi)似AJAX的新方法來(lái)動(dòng)態(tài)生成基于JAVA類(lèi)的JavaScript代碼.這樣WEB開(kāi)發(fā)人員就可以在JavaScript里使用Java代碼就像它們是瀏覽器的本地代碼(客戶(hù)端代碼)一樣;但是Java代碼運(yùn)塵頌行在WEB服務(wù)器端而且可以自由訪(fǎng)問(wèn)WEB 服務(wù)器的資源.出于安全的理由,WEB開(kāi)發(fā)者必須適當(dāng)?shù)嘏渲媚男㎎ava類(lèi)可以安全的被外部使用.
這個(gè)從JAVA到JavaScript的遠(yuǎn)程功能方法給DWR的用戶(hù)帶來(lái)非常像傳統(tǒng)的RPC機(jī)制,就像RMI或者SOAP一樣,而且擁有運(yùn)行在WEB上但是不需要瀏覽器插件的好處.
DWR不認(rèn)為瀏覽器/WEB服務(wù)器協(xié)議是重要的,而更樂(lè)于保證編程界面的簡(jiǎn)單自然.對(duì)此最大的挑戰(zhàn)就是把AJAX的異步特性和正常JAVA方法調(diào)用的同步特性派芹鄭相結(jié)合.在異步模式下,結(jié)果數(shù)據(jù)在開(kāi)始調(diào)用之后的一段時(shí)間之后才可以被異步訪(fǎng)問(wèn)獲取到.DWR允許WEB開(kāi)發(fā)人員傳遞一個(gè)回調(diào)函數(shù),來(lái)異步處理Java函數(shù)調(diào)用過(guò)程.
另處 .dwr還是文件的一種格式: 比如以Dreamweaver軟件里有查找和替換,經(jīng)常用的查找和替換內(nèi)容可以保存,保存的文件就是以 .dwr結(jié)尾的文件。這種文件用記事本打開(kāi)后可以看到它的內(nèi)容。
這個(gè)應(yīng)該可以的,思路如下:不知道合不合你意
1.用javascript寫(xiě)一個(gè)函數(shù),在單擊“顯示”時(shí),調(diào)用函數(shù),將程純或序通過(guò)http請(qǐng)求參數(shù)形式交由Java處理;
2.直沒(méi)陵接將“顯示”做成超鏈接;
a href="process_show.jsp"顯示/a
a href="process_show.jsp?paramter=傳輸參數(shù)"顯示/a
這樣點(diǎn)擊顯示后,程序枯褲戚會(huì)轉(zhuǎn)到process_show.jsp頁(yè)面,由Tomcat或是其它JAVA服務(wù)器處理;你在通過(guò)JSP獲得處理結(jié)果就可以了!
隨著java 的出現(xiàn) 向java嵌入javascript腳本變的特別容易 java 引入了一個(gè)新的javax script包 為腳本化語(yǔ)言提供了一個(gè)通用接口
案例 ; 小說(shuō) 網(wǎng)java中嵌入javascript腳本的思路
取得腳本解釋器的管理器Manager
從管理器中取得js的解釋器實(shí)例ScriptEngine
取得存儲(chǔ)javascript變量的Bindings實(shí)例
把一個(gè)java io Reader流及Bindings傳遞給ScriptEngine的eval()方法 從而運(yùn)行存儲(chǔ)在外部文件中的腳本 eval()方法返回腳本缺扮運(yùn)行結(jié)果 如果執(zhí)行中發(fā)生錯(cuò)誤 會(huì)拋出ScriptException異常
例 運(yùn)行javascript腳本的一個(gè)java程序
import?java io *;???import?javax script Bindings;???import?javax script ScriptEngine;???import?javax script ScriptEngineManager;???import?javax script ScriptException;????/**author?by??id= ?*/public?class?RunScript?{???????public?static?void?main(String[]?args)?throws?IOException{???????????ScriptEngineManager?scriptManager?=?new?ScriptEngineManager();//得到解釋器的管理器 里面有很多種腳本解釋器???????????ScriptEngine?js?=?scriptManager getEngineByExtension( ;js );//從管理器中獲取js的解釋器???????????//定義我們要運(yùn)行的顫扮胡腳本文件???????????String?filename?=?null;???????????//通過(guò)解釋器來(lái)獲得存儲(chǔ)javascript變量的Bindings的實(shí)例 使它們提供給腳本 ???????????Bindings?bindings?=?js createBindings();???????茄攔????//處理參數(shù) 參數(shù)是定義的腳本的變量 參數(shù)可能包括 Dname/value對(duì) 我們要進(jìn)行處理 任何參數(shù)不能以 D 為文件名開(kāi)始???????????for(int?i?=? ;iargs length;i++){???????????????String?arg?=?args[i];???????????????if(arg startsWith( D )){//如果參數(shù)是以 D 開(kāi)頭 則進(jìn)行處理???????????????????int?pos?=?arg indexOf( = );???????????????????if(pos?==? )?usage();???????????????????String?name=arg substring( pos);???????????????????String?value=?arg substring(pos+ );???????????????????//注意 我們定義的所有的變量是字符串 如果必要的話(huà) 我們可以通過(guò)java lang Number? 一個(gè)java lang Boolean 任何Java對(duì)象或NULL 將腳本轉(zhuǎn)換為其他類(lèi)型 ???????????????????bindings put(name ?value);//腳本中的變量存入bindings實(shí)例中???????????????}else{???????????????????if(filename!=null)usage();???????????????????filename=arg;???????????????}???????????}???????????//這里是為了確保我們得到了一個(gè)文件的參數(shù) ???????????if(filename==null){???????????????usage();???????????}???????????//增加一個(gè)具有約束力的使用特殊的保留變量名稱(chēng) 告訴腳本引擎的文件的名稱(chēng)將執(zhí)行 這使它能夠提供更好的錯(cuò)誤信息???????????bindings put(ScriptEngine FILENAME ?filename);???????????//讀取文件的流???????????Reader?in?=?new?FileReader(filename);???????????try{???????????????//執(zhí)行腳本并取得結(jié)果 注意in就相當(dāng)于js中的腳本 而bindings是腳本執(zhí)行所需要的變量???????????????Object?result?=?js eval(in bindings);???????????????System out println(result);???????????}catch(ScriptException?ex){???????????????//執(zhí)行過(guò)程中出異常則顯示一個(gè)錯(cuò)誤信息???????????????System out println(ex);???????????}???????}???????static?void?usage(){???????????System err println( Usage:?java?RunScript[ Dname=value]?script js );???????????System exit( );//異常退出程序 如果正常退出程序用System exit( );???????}???}
這段代碼中所創(chuàng)建的Bindings對(duì)象不是靜態(tài)的 JavaScript腳本所創(chuàng)建的所有的變量都存儲(chǔ)在這里 下面是一個(gè)腳本化Java的更加實(shí)用的例子 它將它的Bindings對(duì)象存儲(chǔ)在一個(gè)具有較高的作用域的ScriptContext對(duì)象中 以便可以讀取其變量 但是新的變量就不存儲(chǔ)到Binhdings對(duì)象中 這個(gè)例子實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的配置文件工具 即一個(gè)文本文件 用來(lái)定義名字/值對(duì) 可以通過(guò)這里定義的Configuration類(lèi)來(lái)查詢(xún)它們 值可能是字符串 數(shù)字或布爾值 并且 如果一個(gè)值包含在花括號(hào)中 那么它就會(huì)傳遞給一個(gè)JavaScript解釋器去計(jì)算 java util Map對(duì)象保存了這些包裝在一個(gè)SimpleBindings對(duì)象中的值 這樣一來(lái) JavaScript解釋器也可以訪(fǎng)問(wèn)同一個(gè)文件中定義的其他變量的值
lishixinzhi/Article/program/Java/JSP/201311/19250