總是跟在開發商後面學習,系統使用了DWR技術,只好跟著開始琢磨這個東西,不為別的,只為能看懂他們的代碼。命苦啊。
接下來就是記錄了:
1、準備eclipse、tomcat,略過;建立web project,略過。
2、下載那個dwr.jar, 放到項目的WEB-INF\lib下面(j2ee的規定目錄)。
3、修改WEB-INF\web.xml,在<web-app>中添加:
<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>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
4、在WEB-INF\下建立dwr.xml設定檔,內容如下:
1 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
2 <dwr>
3 <allow>
4 <create creator="new" javascript="JDate">
5 <param name="class" value="java.util.Date"/>
6 </create>
7 <create creator="new" javascript="Hello1">
8 <param name="class" value="com.myclass.Hello"/>
9 </create>
10 </allow>
11 </dwr>
5、建立Hello.java檔案:
1 package com.myclass;
2
3 public class Hello {
4 public String Say(String msg)
5 {
6 return "hello," + msg;
7 }
8 public String Say()
9 {
10 return "hello,world";
11 }
12 }
6、修改jsp代碼:
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <script src='/test/dwr/interface/Hello1.js'></script>
8 <script src='/test/dwr/engine.js'></script>
9 <script src='/test/dwr/util.js'></script>
10 <title>hello world</title>
11 </head>
12 <script>
13 function hello()
14 {
15 var msg = dwr.util.getValue("msg");
16 if(msg!="")
17 Hello1.Say(msg,say);
18 else
19 Hello1.Say(say);
20 }
21 function say(str)
22 {
23 alert(str);
24 }
25 </script>
26 <body>
27 huha,My JSP!<br>
28 <input type="text" id="msg" name="msg"/>
29 <input type="button" value="click me" onclick="javascript:hello();"/>
30 </body>
31 </html>
需要說明的是:
a、第8、9行是dwr提供的,util.js提供了有用的函數,如dwr.util.getValue()就是一個,擷取頁面上控制項值。
b、第7行是dwr根據java的Hello類創造的js,在dwr.xml中定義,在17行中調用。可以很自由的把java類當成js類使用。
c、整個的調用過程是:用戶端事件觸發執行js代碼1,該代碼使用ajax方式調用伺服器的java代碼,返回後系統會將傳回值作為參數再調用用戶端js代碼2。
d、第17行的調用需要說明一下,Say函數(代碼1)有兩個參數,一個是java類需要的入口參數,後一個是用戶端的回呼函數,該回呼函數就是在Ajax方式下伺服器代碼執行完後需要調用用戶端執行的js代碼2。伺服器java類執行完後的傳回值會作為參數送入該回呼函數。
以上只是dwr的hello world代碼。