DWR从零开始之HelloWorld

原创|其它|编辑:郝浩|2009-04-23 11:59:01.000|阅读 409 次

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

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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

在web.xml中加入DWRServlet…

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <display-name>dwrtest</display-name>

 <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>

</web-app>

接下来写个简单的Hello吧!

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目录下建立这个这个文件:

<!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">
      <param name="class" value="java.util.Date"/>
    </create>
    <create creator="new" javascript="Hello">
      <param name="class" value="com.dwr.HelloWorld"/>
    </create>
  </allow>
</dwr>

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

来写个客户端的网页,当中有一个输入字段,这里我们建立一个index.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='哈罗' onclick='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:

function hello(){
 var user = $('user').value;
 Hello.sayHello(user,callback);
}
function callback(msg){
 DWRUtil.setValue('result',msg);
}

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


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP