欢迎访问: www.ptcms.cn
第一:新建项目
第二:加载dwr.jar包
第三:修改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">
<!-- dwr -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<!-- This should NEVER be present in live -->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- Remove this unless you want to use active reverse ajax -->
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<!-- By default DWR creates application scope objects when they are first
used. This creates them when the app-server is started -->
<init-param>
<param-name>initApplicationScopeCreatorsAtStartup</param-name>
<param-value>true</param-value>
</init-param>
<!-- This enables full streaming mode. It's probably better to leave this
out if you are running across the internet -->
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>-1</param-value>
</init-param>
<!--
For more information on these parameters, see:
- http://getahead.org/dwr/server/servlet
- http://getahead.org/dwr/reverse-ajax/configuration
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<!-- /dwr -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
--------------------------
第四:在WEB-INF目录下 新建dwr.xml文件 配置如下:
-------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<!-- intro - for the test on index.html -->
<create creator="new" javascript="UserManager2">
<param name="class" value="cn.lh.dwr.UserManager2"/>
</create>
<convert match="cn.lh.bean.dwr.UserInfo" converter="bean" />
</allow>
</dwr>
---------------------------------
第五:建立后台代码:
-------------bean------------
package cn.lh.bean.dwr;
public class UserInfo {
private int id;
private int areaID;
private String name;
private int fixFee;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAreaID() {
return areaID;
}
public void setAreaID(int areaID) {
this.areaID = areaID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getFixFee() {
return fixFee;
}
public void setFixFee(int fixFee) {
this.fixFee = fixFee;
}
//for debug
public String toString(){
return "id: "+id+" areaID:"+areaID+" name:"+name+" fixFee:"+fixFee;
}
----------------------------
--------逻辑代码被dwr暴露的代码---------
package cn.lh.dwr;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import cn.lh.bean.dwr.UserInfo;
public class UserManager2 {
//用于生成用户唯一的ID
private static int userID = 0 ;
//区域列表在装载类时 初始化
private static Map area = new HashMap() ;
static{
for(int i=0;i<4;i++){
area.put(1, "a") ;
area.put(2, "b") ;
area.put(3, "c") ;
area.put(4, "d") ;
}
}
//返回区域列表
public Map getArea(){
return area ;
}
/*
* 根据地区代号提取用户列表
*/
// 根据地区代号提取用户列表
public List<UserInfo> getUserByAreaID(int areaID){
System.out.println("AreaID : "+areaID);
List<UserInfo> userList=new ArrayList();
//模拟生成用户列表
int count=new java.util.Random().nextInt(5)+4;
for(int i=1;i<=count;i++){
userID++;
UserInfo us=new UserInfo();
us.setId(userID);
us.setAreaID(areaID);
us.setName("第"+userID+"个用户");
us.setFixFee(100*i);
userList.add(us);
}
return userList;
}
//修改用户信息
public boolean updateUser(UserInfo userinfor){
return true ;
}
public static void main(String args[]){
}
}
------------------------------------
第六: 建立jsp文件和相关js文件 及 添加 dwr 相关js文件---直接看jsp文件
--------------------
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
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>
<base href="<%=basePath%>">
<title>My JSP 'userinfor_manager.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--引入dwr的js脚本-->
<script src="dwr/interface/UserManager2.js"></script>
<script src="dwr/engine.js" /></script>
<script src="dwr/util.js" /></script>
<script type="text/javascript">
//定义一个数组,用以缓存表中的用户信息
var userCach = { };
function fill_select_user_area() {
UserManager2.getArea(callback);
}
function callback(data) {
DWRUtil.removeAllOptions("select_user_area");
DWRUtil.addOptions("select_user_area", data);
}
function displayselectUserArea(sua) {
UserManager2.getUserByAreaID(sua.value, call_table);
}
function call_table(data) {
dwr.util.removeAllRows("userTable");
var dtable = document.getElementById("userTable");
for (var i = 0; i < data.length; i++) {
var theUser = data[i];
var eltr = dtable.insertRow( -1 );
var userTableRowId = 1000 * i;
eltr.setAttribute("id",userTableRowId);
var idTd = eltr.insertCell( -1 );
idTd.innerHTML= theUser.id ;
var areaTd = eltr.insertCell( -1 );
areaTd.innerHTML=theUser.areaID ;
var nameTd = eltr.insertCell( -1 );
nameTd.innerHTML=theUser.name ;
var fixFeeTd = eltr.insertCell( -1 );
fixFeeTd.innerHTML=theUser.fixFee ;
var editor = eltr.insertCell(-1);
var EditorButton = "<input type=\"button\" value=\"修改\" onclick=\"editoruser("+theUser.id+");\"/>" ;
var DeleteButton = "<input type=\"button\" value=\"删除\" onclick=\"deleteRowbyid("+theUser.id+","+userTableRowId+");\"/>";
editor.innerHTML = EditorButton+" "+DeleteButton ;
userCach[theUser.id] = theUser ;
}
}
function deleteRowbyid(userid,rowid){
var user = userCach[userid] ;
if(window.confirm("确定删除"+user.name+"?"))
{
var rowToDelete = document.getElementById(rowid);
var t_body = document.getElementById("userTable");
t_body.removeChild(rowToDelete) ;
}
}
//把要编辑的先显示出来
function editoruser(userid){
document.getElementById("editorID").style.visibility ="visible" ;
var theUser = userCach[userid] ;
var demoUser = {spanuserid:theUser.id ,iptname:theUser.name,iptarea:theUser.areaID,iptfixFee:theUser.fixFee} ;
dwr.util.setValues(demoUser);
}
//修改用户信息
function updateUser(){
var userinfor = new Object();
userinfor.id =dwr.util.getValue("spanuserid");
userinfor.name = dwr.util.getValue("iptname");
userinfor.areaID = dwr.util.getValue("iptarea");
userinfor.fixFee = dwr.util.getValue("iptfixFee");
UserManager2.updateUser(userinfor,callback_user);
}
function callback_user(result){
if(result){
window.alert("修改成功!!");
}
}
</script>
</head>
<body onload="fill_select_user_area();">
根据区域提取未处理客户:
<select id="select_user_area" onchange="displayselectUserArea(this)"></select>
<table border="1">
<thead>
<tr>
<th>
序号
</th>
<th>
所属地区
</th>
<th>
用户名
</th>
<th>
费用
</th>
<th>
操作
</th>
</tr>
</thead>
<tbody id="userTable"></tbody>
</table>
<!-- 初始不可见 -->
<div id="editorID" style="visibility:hidden" >
要修改的用户:
<hr>
用户序号:<span id="spanuserid"></span><br/>
用户名字:<input id="iptname" type="text" size="10" /><br/>
所属地区:<input id="iptarea" type="text" size="10" /> <br/>
用户额度:<input id="iptfixFee" type="text" size="10" /> <br/>
<br/>
<input type="button" value="保存" onclick="updateUser();"/>
</div>
</body>
</html>
-------------------------------------------
分享到:
相关推荐
使用dwr做消息推送的案例。 这是一个myeclipse下开发的web,只要放入tomcat中就能运行。
本实例"DWRSpring实例"是一个使用DWR与Spring框架结合的消息发布系统,包含了基础的CRUD(Create、Read、Update、Delete)操作。通过这个例子,我们可以深入理解DWR和Spring如何协同工作,以及它们在实际开发中的...
这一步是为了告诉Web容器如何处理与DWR相关的请求。 ```xml <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <servlet-mapping> ...
这通常涉及在Spring的`applicationContext.xml`中声明DWR相关的bean,并配置Spring的`Controller`来处理DWR请求。 5. **安全与性能考虑**:在结合Spring的情况下,学习如何确保DWR调用的安全性,避免跨站脚本攻击...
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker</servlet-name> <servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class> ...
DWR (Direct Web Remoting) 是一个开源的Java库,用于在Web应用程序中实现Ajax功能,使得JavaScript可以直接调用服务器端的Java方法,从而实现实时的、无需刷新页面的数据交互。DWR充当了Java开发者和网页设计者之间...
本教程将带你走进DWR的世界,通过一个简单的"Hello World"示例来了解其基本使用。 ### 一、DWR简介 DWR的核心概念是"Remoting",即远程调用,它使得JavaScript可以像调用本地方法一样调用服务器上的Java方法。DWR...
DWR (Direct Web Remoting) 是一个开源JavaScript库,它允许Web应用程序与服务器端Java对象进行实时交互,实现异步更新页面,无需刷新整个页面。这个压缩包文件"dwrtest"很可能包含了9个经典的DWR实例,这些实例通常...
这个不是我的原创,原文件出至这里:http://d.download.csdn.net/detail/jimyx123/1533286#comment 原资源包含了,源代码和API Doc,只是美中不足的是没有整理成可用的zip文档,我这特分离了一下,并重新打好包了,...
使用DWR时,首先要在服务器端创建一个DWR引擎实例,并配置允许客户端访问的Java对象和方法。接着,在客户端,通过引入DWR生成的JavaScript文件,就可以直接调用这些服务器端的方法。DWR简化了跨域问题,让开发者...
Direct Web Remoting (DWR) 是一个开源Java库,它允许在Web应用程序中轻松地进行JavaScript和服务器端Java代码之间的交互。DWR使得AJAX(Asynchronous JavaScript and XML)开发更为简便,允许开发者在不刷新整个...
通过DWR和RMI的实例操作,我们可以构建出一个具有动态交互特性的Web应用,其中DWR负责前端与后端的异步通信,而RMI则处理后台的分布式计算和数据交换。这两个技术的结合可以为复杂的Web应用提供高效且灵活的解决方案...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。在"HelloWorld解释&&使用javabean"这个主题中,我们将深入理解DWR的基本概念、工作...
### dwr实例教程知识点解析 #### 一、DWR简介及功能特点 DWR(Direct Web Remoting)是一种简化Ajax应用开发的技术框架。它能够使客户端的JavaScript代码直接调用服务器端的Java方法,实现数据的实时交互。与传统...
自己写的dwr实例。方便大家学习,包括jar文件,希望对大家有帮助
1. **DWR Filter**:添加一个名为`dwr-invoker-filter`的Filter,用来拦截所有DWR相关的HTTP请求。 2. **DWR Servlet**:声明一个名为`dwr-invoker`的Servlet,它会处理DWR的请求。在这里,你需要指定Servlet的类名...
DWR(Direct Web Remoting)是一个开源的Java库,它允许JavaScript在浏览器中与服务器上的Java对象进行交互,实现了Web应用中的Ajax功能。DWR使得Web开发者可以方便地在客户端进行服务器端方法的调用,极大地提升了...
压缩包内的"chat(dwrAjax反转)"文件可能是DWR聊天室的示例,它展示了如何使用DWR的推技术实现一个简单的实时聊天应用。在这个示例中,用户可以通过JavaScript与服务器进行交互,发送消息,同时服务器也能在接收到新...
标题 "dwr2.0.2.jar + bsf-2.3.jar+xml-apis.jar" 暗示了这是一个关于Web应用程序开发中的某些组件的集合,主要涉及Direct Web Remoting (DWR) 和 Java脚本引擎接口。描述与标题相同,进一步确认了这可能是一个包含...
在这个“一个完成的dwr初学实例”中,我们将探讨DWR的基本概念、工作原理以及如何创建一个简单的DWR应用。 1. **DWR简介** DWR的核心功能是提供一种简单的方法来调用服务器端的方法,就像它们是本地JavaScript函数...