日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DWR基础学习

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DWR基础学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DWR簡介?

????? DWR(direct web remoting)是一個開源的java包,可以使瀏覽器中的代碼使用web服務器中java類的方法,就像這個方法就是在瀏覽器中一樣。

??????DWR包括兩個部分:一個運行在服務器端的Java Servlet,負責處理瀏覽器的請求并發送反饋給瀏覽器;另一個是運行在瀏覽器端的JavaScript,負責發生請求并動態修改web頁面。
步驟如下:
(1)、下載dwr.jar,將WEB-INF\lib下的jar文件放在web-inf/lib目錄下
(2)、修改web.xml,增加:
<servlet>???
????<servlet-name>dwr-invoker</servlet-name>???
????<display-name>DWR?Servlet</display-name>???
????<servlet-class>uk.ltd.getahead.dwr.DWRServletservlet-class>?//如果是DWR?2.x,改成org.directwebremoting.servlet.DwrServlet????
????<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>??
(3)、創建dwr.xml放在與web.xml一個目錄下面
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "
http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>???
??? <allow>
??????? <create?creator="new"?javascript="JDate">?//JS使用的類名?
???????????? <param?name="class"?value="java.util.Date"/>??//實際java的類
?????? ?</create>??
??????? <create?creator="new"?javascript="Hello" scope="page/request/session/application">?//可以設置對象保存的位置
???????????? <param?name="class"?value="com.dwr.HelloWorld"/>??//實體bean
??????? </create>??
??? </allow>??
</dwr>??
(4)、
一般jsp頁面中需要加入:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>??
<head>??
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">??
<title>DWR's? HelloWorld</title>??
<script type='text/javascript' src='dwr/interface/Hello.js'></script>??
<script type='text/javascript' src='dwr/engine.js'></script>??
<script type='text/javascript' src='dwr/util.js'></script>?
<script type='text/javascript' src='hello.js'></script>??
</head>??
<body>??
<input id="user" type="text" /><input type='button' value='哈羅' οnclick='hello();' />? <div id="result"></div>??
</body>??
</html>?

其中最后一個js文件是自定義的文件,其他的是動態生成的
(5)、寫服務端的JAVA類

package com.dwr;

public class HelloWorld {
????? private String name;
????? public HelloWorld(){}
????? public String getName(){
????????? ?return name;
????? }
????? public void setName(String name){
????????? this.name=name;
????? }
????? public String sayHello(String name){
????????? return "hello,"+name;
???? ?}

}


(6)、寫客戶端的js
function hello() {

??? var user = $('user').value;
??? Hello.sayHello(user, callback);
}
?
function callback(msg) {//回調方法
??? DWRUtil.setValue('result', msg);
}

dwr相關的幾個配置文件介紹

1.web.xml中dwr定義的一點小技巧
加下面的參數,可以讓dwr以debug模式產生測試頁面
<init-param>???
??? <param-name>debug</param-name>??
??? <param-value>true</param-value>??
</init-param>??
2.dwr.xml介紹
格式:
<dwr>?????
??? <init>???
?????? ?<creator?id="..."?class="..."/>??
?????? ?<converter?id="..."?class="..."/>??
??? </init>???
??? <allow>??
??????? <create?creator="..."?javascript="..."/>??
??????? <convert?converter="..."?match="..."/>??
??? </allow>??
??? <signatures>???
?????? ?...????
??? </signatures>????
</dwr>??

(1)一般結構如下,對每個要在遠程訪問方法的java類都要定義一個creator

<create?creator="..."?javascript="..."?scope="...">??
???? <param?name="..."?value="..."/>??
???? <auth?method="..."?role="..."/>??
???? <exclude?method="..."/>???
?????<include?method="..."/>??
</create>?? 對各個元素進行描述

(2)、 creator屬性
new:指用java的new操作符創建對象
none:并不產生對象
scripted:用腳本語言創建對象,如BeanShell?或 Groovy via BSF
spring:通過spring framework創建對象
struts:使用struts的FormBean
pageflow:使用Beehive or Weblogic的PageFlow
(3)、javascript屬性
?????????在瀏覽器端,代理的遠程java對象的javascript對象的名字,也就是說,是一個JavaScript對象名稱
(4)、scope屬性
?????????遠程java對象scope可以設置page、request、session、application。
(5)、param子元素:定義訪問的具體java類。

(6)、include和exclude子元素:限制訪問的方法

DWR util.js工具包的使用
目錄列表:
1、$()
2、DWRUtil.getText(id)
3、DWRUtil.getValue(id)
4、DWRUtil.setValue(id,value)
5、DWRUtil.getValues()
6、DWRUtil.setValues()
7、DWRUtil.addOptions and DWRUtil.removeAlloptions
8、DWRUtil.addRows and DWRUtil.removeAllRows
9、DWRUtil.onReturn
10、DWRUtil.toDescriptiveString
11、DWRUtil.useLoadingMessage

(1)、DWRUtil.selectRange("selectRangeBasic", 5, 15) 選中selectRangeBasic文本框里面從第五個字符到第15個字符之間的字符.
(2)、var arrayFive = [ 'One', 'Two', 'Three', 'Four', 'Five' ];
DWRUtil.addOptions('addOptionsBasic', arrayFive); 將數組添加到下拉菜單里面去;
(3)、DWRUtil.getValue('addOptionsBasic') 得到 addOptionsBasic 對象的值;
(4)、DWRUtil.getText('addOptionsBasic') 得到下拉框 addOptionsBasic 顯示的文本;
(5)、var arrayObject = [
{ name:'One', value:'1' },
{ name:'Two', value:'2' },
{ name:'Three', value:'3' },
{ name:'Four', value:'4' },
{ name:'Five', value:'5' }
];DWRUtil.addOptions('addOptionsObject1', arrayObject, "name"); 將數組添加到下拉菜單里面去;后面的參數是確定那個是給用戶顯示的文本,同時也是值;如果是name表示名稱和值都用name顯示。
DWRUtil.addOptions('addOptionsObject1', arrayObject, "name","value"); 同上,不過后面參數是: 3=值;4=文本;
(6)、var map = { one:1, two:2, three:3, four:4, five:5 };
DWRUtil.addOptions('addOptionsMap1', map); 同上, one 是值;1 是文本;
DWRUtil.addOptions('addOptionsMap1', map,true); 同上, 1 是值;one 是文本;
(7)、DWRUtil.cloneNode('cloneNode1', { idPrefix:'pre', idSuffix:'suf' });克隆一個節點,參數一為要克隆的節點的id,第二個參數是在克隆的節點id前面加pre,后面加suf.(注意:如果該節點有子節點的話,子節點的名字也一樣加
(8)、DWRUtil.onReturn(event, submitFunction);一般在form表單里面,防止在文本框上按回車就提交表單.
例如:
<input type="text"
οnkeypress="DWRUtil.onReturn(event, submitFunction)"/>
<input type="button" οnclick="submitFunction()"/>
submitFunction表示要調用的js函數

轉載于:https://www.cnblogs.com/flyingzqx/archive/2009/12/14/1623696.html

總結

以上是生活随笔為你收集整理的DWR基础学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。