1.import jars
commons-logging-1.0.4.jar
dwr.jar
2.web.xml
<!-- DWR配置 -->
<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>
3.DwrDemo.java
public String getHello(String username){
System.out.println("DwrDemo getHello()......");
return "Hello "+username;
}
UserDao.java
private static Map<Integer, User> dataMap=new HashMap<Integer, User>();
public boolean save(User user){
System.out.println("*****************************");
System.out.println("UserDao save()........");
System.out.println("保存用戶信息:");
System.out.println("user.username: "+user.getUsername());
System.out.println("usr.password: "+user.getPassword());
dataMap.put(1, user);
return true;
}
public User getUser(String id){
return (User)dataMap.get(1);
}
User.java
public String username;
public String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
4.dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<dwr>
<allow>
<!--配置的一個演示類,javascript="Demo" 表示可以在頁面中用Demo這個名稱指向DwrDemo這個java類,類中的方法可以在前臺調用 -->
<!-- creater="new"表示每調用一次時,都需要new一個 -->
<create creator="new" javascript="Demo">
<param name="class" value="com.yue.test1.dwr.services.DwrDemo" />
</create>
<create creator="new" javascript="MyDate">
<param name="class" value="java.util.Date" />
</create>
<create creator="new" javascript="UserDao">
<param name="class" value="com.yue.test1.dwr.services.UserDao" />
</create>
<convert converter="bean" match="com.yue.test1.dwr.bean.User" />
</allow>
</dwr>
5.index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!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=UTF-8">
<script type="text/javascript" src="../js/jquery-1.3.2.js"></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/Demo.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/UserDao.js'></script>
<script type="text/javascript">
//此函數中可以調用java類的方法,除了java方法本身的參數外,還要將回調函數名作爲參數傳給java方法
function sayHello(name) {
Demo.getHello(name, dwrHandler);
}
//這是dwr的一個回調函數,data參數即java方法getHello(String name)的返回值
function dwrHandler(data) {
alert(data);
}
function save2(data){
if(data){
alert("註冊成功");
}else{
alert("註冊失敗");
}
}
function onSave(){
var userMap={};
userMap.username=form1.username.value;
userMap.password=form1.password.value;
UserDao.save(userMap,save2);
}
function getUser(data){
if(data==null){
alert("找不到用戶");
return ;
}
alert("用戶信息:"+data.username+data.password);
}
function findUser(){
UserDao.getUser("1",getUser);
}
</script>
<title>DWR Demo</title>
</head>
<body>
<button onclick="sayHello('Yue')">say Hello to Yue</button><br/>
<form name="form1">
用戶名:<input type="text" name="username"/><br/>
密碼:<input type="text" name="password"/><br/>
<input type="submit" name="submitBtn" value="提交" onclick="onSave()"/>
</form>
<button onclick="findUser()">findUser</button><br/>
</body>
</html>
6.other
不要出現Javascript保留關鍵字;和保留關鍵字同名的函數指定被排除。多數Javascript的關鍵字和Java是相同的。所以你不可能有一個方法叫做”try()”
但是該死”delete()”對與Javascript有着特殊意義,而對Java則不是。
Javascript方法重載是不支持的,所以儘量不要再Java中使用。