- 浏览: 286773 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
cheetah_ysc:
不错不错,我喜欢!
Java固定时间间隔执行 -
voyage_mh:
阿选百度竟然一下可以吧你百度出来
使用DWR注解Annotation
一,将两个jar包加到lib下dwr.jar,commons-logging-1.0.4.jar
二,修改web.xml,添加DWR的核心Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
此处的参数debug在开发阶段设为true,开发完成时要记得设为false,要不不安全。
三,编写处理类
package com.lbx.dwr.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import com.lbx.dwr.bean.Person;
public class MyBean {
public void test1(){
System.out.println("MyBean.test1()");
}
public String test2(){
System.out.println("MyBean.test2()");
return "libinxuan";
}
public String test3(int i, String str){
return "nihao";
}
//以JavaBean作为参数
public String sendObj(Person p){
return p.getUsername();
}
//返回JavaBean实例的方法
public Person getBean(String name){
return new Person(8,"s","123456");
}
//返回集合对象
public List<Person> getPersonList(){
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(2,"chy","123456"));
persons.add(new Person(3,"hhh","123456"));
return persons;
}
//返回一个数组对象
public Person[] getPersonArray(){
Person[] result = new Person[3];
result[0] = new Person(4,"d","d");
result[1] = new Person(6,"ds","sd");
result[2] = new Person(7,"dd","dd");
return result;
}
//返回一个Map对象
public Map<String, Person> getPersonMap(){
Map<String, Person> result = new HashMap<String, Person>();
result.put("first", new Person(1,"lbx","123456"));
result.put("second", new Person(2,"chy","123456"));
return result;
}
//远程方法的参数是集合
public String sendList(List<Person> personlist){
String result = "";
for(Person p : personlist){
result += p.getId() + "<br>";
}
return result;
}
//远程方法的参数是不是泛型的集合
public String sendListNoGrneric(List personlist){
String result = "";
for(Object p : personlist){
result += ((Person)p).getUsername() + "<br>";
}
return result;
}
//远程方法的参数是集合
public String sendMap(Map<String , Person> pmap)
{
String result = "";
for (String key : pmap.keySet())
{
result += "键" + key + " 其值为:" +
pmap.get(key).getUsername() + "<br />";
}
return result;
}
//如何跟servlet的作用域(session,request,ServletContext)交互:
public String test7(){
WebContext wc = WebContextFactory.get();
// wc.getServletContext();
// wc.getHttpServletRequest();
HttpSession session = wc.getSession();
return session.getAttribute("a").toString();
}
}
相应的Model(Person)
package com.lbx.dwr.bean;
public class Person {
private int id;
private String username;
private String password;
public Person() {
}
public Person(int id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
四,配置dwr.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="Demo">
<param name="class" value="com.lbx.dwr.test.MyBean"/>
</create>
<convert match="com.lbx.dwr.bean.Person" converter="bean"></convert> <!-- javabean的转化 -->
</allow>
<signatures>
<![CDATA[
import java.util.List;
import com.lbx.dwr.test.MyBean;
import com.lbx.dwr.bean.Person;
Demo.sendListNoGrneric(List<Person>);
]]>
</signatures>
</dwr>
五,客户端使用DWR
<%@ 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>
<base href="<%=basePath%>">
<title>My JSP 'index.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为Demo对象动态生成的JavaScript代码库 -->
<script type='text/javascript' src='dwr/interface/Demo.js'></script>
<!-- 导入DWR引擎的核心JavaScript代码库 -->
<script type='text/javascript' src='dwr/engine.js'></script>
<!-- DWR的工具JavaScript文件,通过这工具的工具方法可以简化DOM操作 -->
<script type='text/javascript' src='dwr/util.js'></script>
<script><!--
function testdwr(){
Demo.test1(); //调用无返回值的java方法
/*Demo.test2(function(result){
alert(result);
});*/
/*Demo.test3(55,"dd",function(result){
$("div1").innerHTML=result;
});*/
//以JavaBean作为参数的方法
/*var person = {id:3,username:'fff',password:'123'};
Demo.sendObj(person,function(p){
alert(p);
});*/
//返回JavaBean实例的方法
/*Demo.getBean("lbx",function(data){
alert(data.username);
});*/
//返回集合对象
/*Demo.getPersonList(function(data){
var result='';
//遍历每个数组元素
for (var i = 0 ; i < data.length ; i ++)
{
result += data[i].username + "<br />";
}
document.getElementById("div1").innerHTML = result;
});*/
//返回一个数组对象
/*Demo.getPersonArray(function(data){
var result='';
//遍历每个数组元素
for (var i = 0 ; i < data.length ; i ++)
{
result += data[i].username + "<br />";
}
document.getElementById("div1").innerHTML = result;
});*/
//返回一个Map对象
/*Demo.getPersonMap(function(data){
var result='';
for (var key in data)
{
result += "键为" + key + ",其值为:" + data[key].username + "<br />";
}
document.getElementById("div1").innerHTML = result;
});*/
//远程方法的参数是集合,客户端只要提供一个javaScript数组就可以了
/*Demo.sendList([
{id:1,username:"客户端aaa",password:"123456"},
{id:2,username:"客户端bbb",password:"123456"},
{id:3,username:"客户端ccc",password:"123456"}
],function(data){
document.getElementById("div1").innerHTML = data;
});*/
//远程方法的参数是不是泛型的集合(不是泛型就要在web.xml中修改东西)
/*Demo.sendListNoGrneric([
{id:1,username:"客户端aaa",password:"123456"},
{id:2,username:"客户端bbb",password:"123456"},
{id:3,username:"客户端ccc",password:"123456"}
],function(data){
document.getElementById("div1").innerHTML = data;
});*/
//远程方法的参数是集合
/*Demo.sendMap({
first:{id:1,username:"客户端aaa",password:"123456"},
second:{id:2,username:"客户端bbb",password:"123456"},
third:id:3,username:"客户端ccc",password:"123456"}
},function(data){
document.getElementById("div1").innerHTML = data;
});*/
/*
* 当传参是java对象的时候,先弄一个JavaScript对象,不过JavaScript对象的属性必须和Java对象保持一致
*/
/*
var p1 = {id:5,username:'sss',password:'123456'};
Demo.test4(p1,function(p2){
$("div1").innerHTML=p2.username;
});*/
}
--></script>
</head>
<body>
<div id="div1"></div>
<a href="javascript:void(0);" onclick="testdwr();">测试dwr</a>
</body>
</html>
package com.lbx.dwr.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpSession; import org.directwebremoting.WebContext; import org.directwebremoting.WebContextFactory; import com.lbx.dwr.bean.Person; public class MyBean { public void test1(){ System.out.println("MyBean.test1()"); } public String test2(){ System.out.println("MyBean.test2()"); return "libinxuan"; } public String test3(int i, String str){ return "nihao"; } //以JavaBean作为参数 public String sendObj(Person p){ return p.getUsername(); } //返回JavaBean实例的方法 public Person getBean(String name){ return new Person(8,"s","123456"); } //返回集合对象 public List<Person> getPersonList(){ List<Person> persons = new ArrayList<Person>(); persons.add(new Person(2,"chy","123456")); persons.add(new Person(3,"hhh","123456")); return persons; } //返回一个数组对象 public Person[] getPersonArray(){ Person[] result = new Person[3]; result[0] = new Person(4,"d","d"); result[1] = new Person(6,"ds","sd"); result[2] = new Person(7,"dd","dd"); return result; } //返回一个Map对象 public Map<String, Person> getPersonMap(){ Map<String, Person> result = new HashMap<String, Person>(); result.put("first", new Person(1,"lbx","123456")); result.put("second", new Person(2,"chy","123456")); return result; } //远程方法的参数是集合 public String sendList(List<Person> personlist){ String result = ""; for(Person p : personlist){ result += p.getId() + "<br>"; } return result; } //远程方法的参数是不是泛型的集合 public String sendListNoGrneric(List personlist){ String result = ""; for(Object p : personlist){ result += ((Person)p).getUsername() + "<br>"; } return result; } //远程方法的参数是集合 public String sendMap(Map<String , Person> pmap) { String result = ""; for (String key : pmap.keySet()) { result += "键" + key + " 其值为:" + pmap.get(key).getUsername() + "<br />"; } return result; } //如何跟servlet的作用域(session,request,ServletContext)交互: public String test7(){ WebContext wc = WebContextFactory.get(); // wc.getServletContext(); // wc.getHttpServletRequest(); HttpSession session = wc.getSession(); return session.getAttribute("a").toString(); } }相应的Model(Person)
package com.lbx.dwr.bean; public class Person { private int id; private String username; private String password; public Person() { } public Person(int id, String username, String password) { super(); this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } }四,配置dwr.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="Demo"> <param name="class" value="com.lbx.dwr.test.MyBean"/> </create> <convert match="com.lbx.dwr.bean.Person" converter="bean"></convert> <!-- javabean的转化 --> </allow> <signatures> <![CDATA[ import java.util.List; import com.lbx.dwr.test.MyBean; import com.lbx.dwr.bean.Person; Demo.sendListNoGrneric(List<Person>); ]]> </signatures> </dwr>五,客户端使用DWR
<%@ 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> <base href="<%=basePath%>"> <title>My JSP 'index.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为Demo对象动态生成的JavaScript代码库 --> <script type='text/javascript' src='dwr/interface/Demo.js'></script> <!-- 导入DWR引擎的核心JavaScript代码库 --> <script type='text/javascript' src='dwr/engine.js'></script> <!-- DWR的工具JavaScript文件,通过这工具的工具方法可以简化DOM操作 --> <script type='text/javascript' src='dwr/util.js'></script> <script><!-- function testdwr(){ Demo.test1(); //调用无返回值的java方法 /*Demo.test2(function(result){ alert(result); });*/ /*Demo.test3(55,"dd",function(result){ $("div1").innerHTML=result; });*/ //以JavaBean作为参数的方法 /*var person = {id:3,username:'fff',password:'123'}; Demo.sendObj(person,function(p){ alert(p); });*/ //返回JavaBean实例的方法 /*Demo.getBean("lbx",function(data){ alert(data.username); });*/ //返回集合对象 /*Demo.getPersonList(function(data){ var result=''; //遍历每个数组元素 for (var i = 0 ; i < data.length ; i ++) { result += data[i].username + "<br />"; } document.getElementById("div1").innerHTML = result; });*/ //返回一个数组对象 /*Demo.getPersonArray(function(data){ var result=''; //遍历每个数组元素 for (var i = 0 ; i < data.length ; i ++) { result += data[i].username + "<br />"; } document.getElementById("div1").innerHTML = result; });*/ //返回一个Map对象 /*Demo.getPersonMap(function(data){ var result=''; for (var key in data) { result += "键为" + key + ",其值为:" + data[key].username + "<br />"; } document.getElementById("div1").innerHTML = result; });*/ //远程方法的参数是集合,客户端只要提供一个javaScript数组就可以了 /*Demo.sendList([ {id:1,username:"客户端aaa",password:"123456"}, {id:2,username:"客户端bbb",password:"123456"}, {id:3,username:"客户端ccc",password:"123456"} ],function(data){ document.getElementById("div1").innerHTML = data; });*/ //远程方法的参数是不是泛型的集合(不是泛型就要在web.xml中修改东西) /*Demo.sendListNoGrneric([ {id:1,username:"客户端aaa",password:"123456"}, {id:2,username:"客户端bbb",password:"123456"}, {id:3,username:"客户端ccc",password:"123456"} ],function(data){ document.getElementById("div1").innerHTML = data; });*/ //远程方法的参数是集合 /*Demo.sendMap({ first:{id:1,username:"客户端aaa",password:"123456"}, second:{id:2,username:"客户端bbb",password:"123456"}, third:id:3,username:"客户端ccc",password:"123456"} },function(data){ document.getElementById("div1").innerHTML = data; });*/ /* * 当传参是java对象的时候,先弄一个JavaScript对象,不过JavaScript对象的属性必须和Java对象保持一致 */ /* var p1 = {id:5,username:'sss',password:'123456'}; Demo.test4(p1,function(p2){ $("div1").innerHTML=p2.username; });*/ } --></script> </head> <body> <div id="div1"></div> <a href="javascript:void(0);" onclick="testdwr();">测试dwr</a> </body> </html>
发表评论
-
DWR反向Ajax的一个简单Web聊天
2010-12-02 17:32 2478web.xml文件的配置 <?xml version= ... -
DWR反向Ajax技术
2010-12-02 17:29 1812常规的Web应用和通常的Ajax应用都要满足“请求--响应”模 ... -
使用DWR注解Annotation
2010-12-02 17:21 2910Struts 2,Spring,Hibernate 都可以使用 ... -
DWR整合Spring
2010-12-02 17:12 1017Spring容器中的Bean可以被DWR使用:既然使用到了Sp ... -
DWR访问Servlet API
2010-12-02 17:07 1514DWR提供两种方式访问Servlet API: 使用W ... -
DWR中util.js访问HTML元素值
2010-12-02 17:00 1116访问HTML元素的值,只用getValue(elementID ... -
DWR中util.js处理表格
2010-12-02 16:54 1107util.js测试一(动态添加表格),使用dwr.util.a ... -
DWR中的util.js的使用----处理表格
2010-12-02 16:52 1133util.js测试一(动态添加表格),使用dwr.util.a ... -
DWR中的util.js的使用
2010-12-02 16:47 1105一下的程序都是在引用util.js文件的情况下运行的 ... -
DWR使用engine.js
2010-12-02 16:39 8188DWR框架会自动生成两个 ... -
DWR将客户端参数传递到回调函数
2010-12-02 16:18 1410web.xml文件配置 <?xml version=& ... -
DWR使用JSON格式的回调
2010-12-02 16:13 1289web.xml文件 <?xml version=&qu ... -
DWR调用客户端Java代码的程序实例
2010-12-02 16:10 1320//-------------发送简单字符串参数,返回普通 ... -
DWR框架简介
2010-12-02 15:54 1083DWR(Direct Web Remoting)是 ...
相关推荐
这个"TestDWR"文件很可能是DWR的一个简单示例项目,用于演示如何配置和使用DWR框架。 在DWR的实例中,主要涉及以下几个关键知识点: 1. **DWR的配置**:首先,你需要在Web应用的`web.xml`文件中配置DWR的Servlet,...
在你提供的信息中,"dwr小程序,自己新写的dwr程序"可能是你创建的一个基于DWR框架的项目,可能用于快速构建交互性强的前端应用。 DWR的核心特性包括: 1. **异步通信**:DWR允许前端JavaScript代码异步调用服务器...
DWR通过在客户端和服务器之间建立一个通信层,使得开发者可以轻松地在JavaScript中使用Java对象,极大地简化了前后端交互的复杂性。 DWR的核心组件包括: 1. **DWRServlet**:这是DWR的主要入口点,它是一个...
5. **小demo**:这个项目可能包含了一个简单的示例,演示了如何在J2EE环境中集成DWR,以及如何使用DWR进行后台交互的基本步骤,这对于初学者理解和学习DWR非常有帮助。 6. **标签“dwr”**:这个标签明确了项目的...
在这个"dwrc的一个小demo"中,我们很显然会看到一个使用DWR 3.0框架的基础示例。DWR 3.0版本是一个重要的升级,提供了更多的特性以及对现代Web开发的更好支持。 首先,我们需要理解DWR的核心概念。DWR允许我们在...
以下是一个简单的DWR示例: - 在服务器端,创建一个名为`CalculatorService`的Java类,包含一个`add`方法: ```java public class CalculatorService { public int add(int a, int b) { return a + b; } } ``` -...
标题中的“dwr小项目及资料”暗示我们这是一套关于DWR的实践项目和学习资源,可能包含了一些示例代码和文档,帮助我们理解如何在实际项目中应用DWR。 描述中提到的“实现前台javascript直接调用后台业务方法和后台...
DWR(Direct Web Remoting)是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行实时的、双向的通信,无需刷新整个页面。这个小例子是关于如何使用DWR来动态地显示和操作HTML表格数据。...
DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行异步通信,实现了类似Ajax的功能。在这个小实例中,我们将探讨如何使用DWR来实现实时的文件上传功能,这...
在这个基于IDEA 8的开发项目中,我们看到了一个使用DWR(Direct Web Remoting)、iBatis、Ext JS和MySQL构建的小程序的配置和部分实现。这些技术组合在一起,可以创建一个动态、交互式的Web应用程序,具备强大的数据...
这个"DWR小例子_DEMO"是帮助开发者理解并快速上手DWR的一个实践项目,其中包含了说明文件和必要的代码示例。 DWR的核心功能是允许前端JavaScript直接调用后端Java方法,仿佛它们是在同一环境中运行一样,消除了传统...
DWR(Direct Web Remoting)是一个开源的Java库,它允许在JavaScript和Java之间进行安全、高效的远程调用。这个例子展示了如何在Web应用程序中使用DWR与Tomcat数据库连接池来实现Ajax交互,从而实现实时的客户端-...
本项目是基于Servlet和DWR的实现,旨在提供一个简单但功能齐全的范例,展示如何在实际应用中使用DWR。 首先,理解DWR的基本概念至关重要。DWR是一种开源框架,它在浏览器和服务器之间创建了一种透明的远程方法调用...
DWR提供了一个内置的调试工具——DWR Reverse Ajax Console,它可以帮助开发者查看和测试远程调用,便于调试和问题定位。 通过以上知识点,我们可以了解到DWR如何在Web应用程序中实现前后端的无缝交互。不过,实际...
`DWR小例子.avi`可能是一个视频教程,展示了具体的DWR使用步骤和实例,包括如何设置MyEclipse环境,创建DWR配置文件,编写Java服务端代码,以及在HTML/JavaScript客户端进行调用。 `readme.txt`通常包含项目的基本...
在web.xml中,DWR的最基础配置涉及创建一个名为`dwr-invoker`的servlet,其类为`uk.ltd.getahead.dwr.DWRServlet`。此servlet负责处理所有DWR相关的请求。配置如下: ```xml <servlet-name>dwr-invoker ...
DWR(Direct Web Remoting)是一个开源的Java库,由Joe Walker和Mark Goodwin开发,旨在简化Web应用中的Ajax(Asynchronous JavaScript and XML)开发。DWR允许JavaScript在客户端与服务器端的Java对象进行直接交互...
这个小例子展示了如何使用DWR来动态加载下拉框(Dropdown List)的数据,这种技术在网页应用中非常常见,特别是当需要在用户界面加载时就获取并填充数据的场景。 首先,我们需要理解DWR的基本工作原理。DWR允许...