DWR的使用

DWR(Direct Web Remoting)是一個用於改善web頁面與Java類交互的遠程服務器端Ajax開源框架

(1)導入dwr.jar,commons-logging-1.2.jar

(2)在web.xml文件中添加


<!-- 配置DWR的核心Servlet -->
	<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
		<!-- 下面兩個可以不用配置 -->
		<init-param>
			<param-name>crossDomainSessionSecurity</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>allowScriptTagRemoting</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)在WEB-INF文件夾下建dwr.xml文件

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">
<dwr>
	<allow>
		<create creator="new" javascript="DwrTest">
			<param name="class" value="cn.axin.dwr.DWRTest" /><!-- 自定義的類 -->
		</create>
		<create creator="new" javascript="AjaxDate">
			<param name="class" value="java.util.Date" />
		</create>
	</allow>
</dwr>

DWRTest類

public class DWRTest {
	public int getData(int index){
		Random rand = new Random();
		return rand.nextInt(index);
	}
}


通過修改dwr.xml文件,可以將自定義的java類公開給javascript遠程調用
在該配置文件中,creator屬性是必須的,他指定使用哪種創造器。creator
屬性有三種選擇值:new,scripted和spring。最常用的是new,它代表使用java
類默認的無參構造方法創建類的實例對象;scripted值表示使用腳本語言來創建
java類對象;spring表示通過Spring框架Bean來創建java類對象
還可以在create元素下加入include標記,指明要公開給javascript的方法

(4)在JSP頁面進行使

<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/DwrTest.js"></script>
<script type="text/javascript" src="dwr/interface/AjaxDate.js"></script>
<script type="text/javascript">
	function doTest1() {
		AjaxDate.toString(callBack1);
	}
	function callBack1(data)//data是Date類的toString方法返回值
	{
		window.alert("現在的時間是:" + data);
	}
	function doTest2() {
		DwrTest.getData(123,callBack2);//123是getData方法的參數,callBack2是回調函數
	}
	function callBack2(data)//data是getData方法的返回值
	{
		window.alert("隨機數:" + data);
	}
</script>
</head>
<body>
	<input type="button" value="顯示當前時間,我變" onclick="doTest1()"><br/><br/>
	<input type="button" value="我點,變了" onclick="doTest2()">
</body>
DwrTest.js和AjaxDate.js命名來源於你的dwr.xml的

<create creator="new" javascript="DwrTest">

<create creator="new" javascript="AjaxDate">

javascript屬性的配置名


注意啦:

我這<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/DwrTest.js"></script>
<script type="text/javascript" src="dwr/interface/AjaxDate.js"></script>

如果把這兩行放在前面就沒有用了,而DWR官網是這樣子的

<script src='/[YOUR-WEBAPP-CONTEXT]/dwr/interface/[YOUR-SCRIPT].js'></script>
<script src='/[YOUR-WEBAPP-CONTEXT]/dwr/engine.js'></script>

就這問題可害苦了我啊..........

可能在你那不是這樣子的,只有測試了才懂地


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章