dwr的第一个入门范例
dwr的第一个入门实例
几经周折,参考网上的各种入门实例,终于完成了自己的第一个DWR例子。好,不多说,回放一遍整个过程。
1.在myeclipse下建立一个web工程,取名为dwr,导入dwr.jar和commons-logging.jar包到lib目录下。
2.建立实例类User
package test; 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; } }
3.建立UserDao类
package test; import java.util.HashMap; import java.util.Map; public class UserDAO { //存放保存的数据 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 User find(String id) { return (User)dataMap.get(id); } }
4.建立DWRUserAccess 类
package test; 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); } }
5.修改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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置DWR的核心Servlet --> <listener> <listener-class>org.directwebremoting.servlet.DwrListener</listener-class> </listener> <servlet> <!-- 指定DWR核心Servlet的名字 --> <servlet-name>dwr-invoker</servlet-name> <servlet-class> <!-- 指定DWR核心Servlet的实现类 --> org.directwebremoting.servlet.DwrServlet </servlet-class> <!-- 指定DWR核心Servlet处于调试状态 --> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 指定核心Servlet的URL映射 --> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> </web-app>
6.建立dwr.xml文件,和web.xml在同级目录下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"> <dwr> <allow> <create creator="new" javascript="DWRUserAccess"> <param name="class" value="test.DWRUserAccess" /> </create> <convert converter="bean" match="test.User" /> </allow> </dwr>
7.编写JSP页面
<%@ page language="java" import="java.util.*" 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"> <HTML> <HEAD> <TITLE>DWR测试</TITLE> <script src="dwr/engine.js"></script> <script src="dwr/util.js"></script> <script 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="提交" onclick="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="提交" onclick="OnFind()"> <br> </form> <br> </BODY> </HTML> <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>