dwr的初步配置和使用



最近项目用到了一个叫dwr的框架,鉴于我刚看js也没几天,很多东西不明白,就先按照网上的资料配置了一个简单的使用dwr框架的web应用。

eclipse:Juno Service Release 2

tomcat: version-6.x

jdk: 6.x

先用eclipse建立一个动态web工程。

修改web.xml为


<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
	<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>uk.ltd.getahead.dwr.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>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>login.jsp</welcome-file>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
		<welcome-file>test.html</welcome-file>
	</welcome-file-list>

</web-app>

然后建三个类

package com.charvis.model;

public class User {
	//登陆ID,主键唯一
	private String id;
	//姓名
	private String name;
	//口令
	private String password;
	//电子邮件
	private String email;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}


}

package com.charvis.dao;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.charvis.model.User;

public class UserDAO {
	private static Log log = LogFactory.getLog(UserDAO.class);
	//存放保存的数据
    private static Map dataMap = new HashMap();

    /*//持久用户
    public boolean save(User user) {
      if (dataMap.containsKey(user.getId()))
        return false;
      System.out.println("下面开始保存用户");
      System.out.println("id:"+user.getId());
      System.out.println("password:"+user.getPassword());
      System.out.println("name:"+user.getName());
      System.out.println("email:"+user.getEmail());
      dataMap.put(user.getId(), user);
      System.out.println("用户保存结束");
      return true;
    }*/
    //持久用户
    public boolean save(User user) {
      if (dataMap.containsKey(user.getId()))
        return false;
      log.info("下面开始保存用户");
      log.info("id:"+user.getId());
      log.info("password:"+user.getPassword());
      log.info("name:"+user.getName());
      log.info("email:"+user.getEmail());
      dataMap.put(user.getId(), user);
      log.info("用户保存结束");
      return true;
    }
    //查找用户
    public User find(String id) {
      return (User)dataMap.get(id);
    }

}

package com.charvis.dwr;

import com.charvis.dao.UserDAO;
import com.charvis.model.User;

public class DWRUserAccess {
	UserDAO userDAO = new UserDAO();

    public boolean save(User user) {
      return userDAO.save(user);
    }

    public User find(String id) {
      return userDAO.find(id);
    }

}

新建一个test.html文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>DWR测试</TITLE>
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
<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/DWRUserAccess.js"></script>
</HEAD>
<BODY>
	<B>用户注册</B>
	<br> ------------------------------------------------
	<Br>
	<form name="regForm">
		登陆ID:<input type="text" name="id"><br> 
		口 令:<input type="password" name="password"><br> 
		姓 名:<input type="text" name="name"><br> 
		电子邮件:<input type="text" name="email"><br> 
		<input type="button" name="submitBtn"
			value="提交" οnclick="OnSave()"><br>
	</form>

	<br>
	<br>
	<B>用户查询</B>
	<br> ------------------------------------------------
	<Br>
	<form name="queryForm">
		登陆ID:<input type="text" name="id"><br> 
		<input type="button" name="submitBtn" value="提交" οnclick="OnFind()"><br>
	</form>
	<br>
</BODY>
<SCRIPT LANGUAGE="JavaScript">
	function saveFun(data) {
		if (data) {
			alert("注册成功!");
		} else {
			alert("登陆ID已经存在!");
		}
	}
	function OnSave() {
		var userMap = {};
		userMap.id = regForm.id.value;
		userMap.password = regForm.password.value;
		userMap.name = regForm.name.value;
		userMap.email = regForm.email.value;
		DWRUserAccess.save(userMap, saveFun);
	}
	function findFun(data) {
		if (data == null) {
			alert("无法找到用户:" + queryForm.id.value);
			return;
		}
		alert("找到用户,nid:" + data.id + ",npassword:" + data.password + ",nname:"
				+ data.name + ",nemail:" + data.email);
	}
	function OnFind() {
		DWRUserAccess.find(queryForm.id.value, findFun);
	}
</SCRIPT>
</HTML>




然后再web-inf文件夹下面新建dwr.xml文件

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://directwebremoting.org/schema/dwr30.dtd">

<dwr>
	<allow>
		<create creator="new" javascript="DWRUserAccess">
			<param name="class" value="com.charvis.dwr.DWRUserAccess" />
		</create>
		<convert converter="bean" match="com.charvis.model.User" />
	</allow>
</dwr>


研究一下可以发现,这个配置文件就是映射js和java类的。js中这个DWRUserAccess对象,应该就会被映射成com.charvis.dwr.DWRUserAcces这个类的对象。回调函数的参数data,就是com.charvis.model.User这个的对象。

试运行一下,在用户名那个地方输入一个。会显示注册成功。这儿我试了一下commons-logging,当然还可以用log4j了。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值