DWR入门教程之HelloWorld

 

Java 开发人员与网页设计人员的桥梁 DWR呃!我懒得写简介了 直接来看看可以做什么吧!

请先到 http://getahead.ltd.uk/dwr/ 下载 dwr.jar ,放到 WEB-INF/lib

负责处理客户端请求,并呼叫 Java 对象的是 DWRServlet DWR 其实也有些 Model 2 的味道,只是 View 的这一层比较弱,因为放到客户端的 JavaScript 应用程序中

web.xml 中加入 DWRServlet…

Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app id="WebApp_ID" version="2.4"  
  3.     xmlns="http://java.sun.com/xml/ns/j2ee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.     <display-name>dwrtest</display-name>  
  7.   
  8.     <servlet>  
  9.         <servlet-name>dwr-invoker</servlet-name>  
  10.   
  11.         <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>  
  12.         <init-param>  
  13.             <param-name>debug</param-name>  
  14.             <param-value>true</param-value>  
  15.         </init-param>  
  16.     </servlet>  
  17.   
  18.     <servlet-mapping>  
  19.         <servlet-name>dwr-invoker</servlet-name>  
  20.         <url-pattern>/dwr/*</url-pattern>  
  21.     </servlet-mapping>  
  22.   
  23. </web-app>  

 

接下来写个简单的 Hello 吧!

Java代码 复制代码
  1. package com.dwr;   
  2.   
  3. public class HelloWorld {   
  4.     private String name;   
  5.     public HelloWorld(){   
  6.            
  7.     }   
  8.     public String getName() {   
  9.         return name;   
  10.     }   
  11.     public void setName(String name) {   
  12.         this.name = name;   
  13.     }   
  14.     public String sayHello(String name) {   
  15.         return "Hello, " + name;   
  16.     }   
  17.   
  18. }  
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;
    }

}

 

客户端要呼叫这个 Java 对象,传给它参数,而后传回一个字符串,客户端再显示这个字符串,神奇?其实是要告诉 DWRServlet 这件事,这需要一个 dwr.xml,在WEB-INF目录下建立这个这个文件:

Xml代码 复制代码
  1. <!DOCTYPE dwr PUBLIC   
  2.     "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"   
  3.     "http://www.getahead.ltd.uk/dwr/dwr10.dtd">  
  4.   
  5. <dwr>  

  1.   <allow>  
  2.     <create creator="new" javascript="JDate">  
  3.       <param name="class" value="java.util.Date"/>  
  4.     </create>  
  5.     <create creator="new" javascript="Hello">  
  6.       <param name="class" value="com.dwr.HelloWorld"/>  
  7.     </create>  
  8.   </allow>  
  9. </dwr>  

creator 设定为 new ,表示使用 Hello 的无参数建构子来生成对象, javascript 设定为 Hello ,表示客户端 JavaScript 程序可以使用 Hello 来呼叫对应的 onlyfun.caterpillar.Hello 物件。

来写个客户端的网页,当中有一个输入字段,这里我们建立一个index.html,内容如下:

Html代码 复制代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
  5. <title>DWR's  HelloWorld</title>  
  6. <script type='text/javascript' src='dwr/interface/Hello.js'></script>  
  7. <script type='text/javascript' src='dwr/engine.js'></script>  
  8. <script type='text/javascript' src='dwr/util.js'></script>  
  9. <script type='text/javascript' src='hello.js'></script>  
  10. </head>  
  11. <body>  
  12. <input id="user" type="text" /><input type='button' value='哈罗' onclick='hello();' />  <div id="result"></div>  
  13. </body>  
  14. </html>  
<!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>

 

 

dwr/interface/Hello.js 是由 DWRServlet 根据 dwr.xml 中的设定生成的, engine.js 负责客户端伺服端沟通, util.js 是一些好用的 JavaScript 程序,可以让您少写很多 JavaScript 。

hello.js 是我们自定义的函式,按下按钮后,会呼叫当中的 hello() 函式,因而 需要在当前文件夹下建立一个hello.js:

Js代码 复制代码
  1. function hello(){   
  2.     var user = $('user').value;   

  1.     Hello.sayHello(user,callback);   
  2. }   
  3. function callback(msg){   
  4.     DWRUtil.setValue('result',msg);   
  5. }  

 

${'user'} 取得输入字段的 DOM 对象, value 取得当中的域值,而后呼叫 Hello.hello() ,并将 value 当作参数传送 结果是呼叫 Server 端的 Hello Java 对象,当结果传回后,会呼叫 JavaScript callback 函式, DWRUtil setValue() 方法会将传回的 msg 设定给指定 id DOM ,结果就是 啥! AJAX 的功能在哪 就这个而言就是发出异步请求,而响应不用 Refresh 页面啦!  


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值