DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.
它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet(小应用程序)中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容.
DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.
这个从JAVA到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要浏览器插件的好处.
DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然.对此最大的挑战就是把AJAX的异步特性和正常JAVA方法调用的同步特性相结合.在异步模式下,结果数据在开始调用之后的一段时间之后才可以被异步访问获取到.DWR允许WEB开发人员传递一个回调函数,来异步处理Java函数调用过程.
http://getahead.org/dwr 官方网站 会自动转到 http://directwebremoting.org/dwr
http://directwebremoting.org/最新官方网址
1.web.xml加入
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2.在web.xml文件目录下,建立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>
<create creator="new" javascript="MyHello">
<param name="class" value="com.MyHello" />
</create>
</allow>
</dwr>
3.com.MyHello
package com;
public class MyHello {
public String hi(String name) {
return "欢迎:" + name + ",数据已经保存到数据中...";
}
public void save(String name) {
DbConn dc = new DbConn();
String sql = "insert into stu values('" + name + "')";
dc.save(sql);
System.out.println(name);
}
}
com.DbConn
package com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DbConn {
String Driver = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/db";
String UID = "root";
String PWD = "";
Connection conn = null;
public void getConn() {
try {
Class.forName(Driver);
conn = DriverManager.getConnection(URL, UID, PWD);
} catch (Exception e) {
}
}
public void save(String sql) {
if (conn == null) {
this.getConn();
try {
conn.createStatement().executeUpdate(sql);
conn.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
4.复制所有的dwr框架的jar文件到lib目录下
5.编写index.html文件
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DWR_Hello</title>
<script type="text/javascript" src="dwr/interface/MyHello.js"></script>
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript">
function hello() {
var user = $("user").value;
MyHello.hi(user, callback);
MyHello.save(user);
}
function callback(msg) {
DWRUtil.setValue("result", msg);
}
</script>
</head>
<body>
<input id="user" type="text" />
<input type="button" value="保存数据" onclick="hello()" />
<div id="result"></div>
</body>
</html>
DWR
Direct Web Remoting
直接的 网 远程的
Easy AJAX for JAVA
旧官方网址
getahead.org/dwr
最新官方网址
directwebremoting.org
1.web.xml加入
<servlet>
<servlet-name>dwr-invoker</>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2.dwr.xml和web.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>
<create creator="new" javascript="mtest" scope="application">
<param name="class" value="com.MyTest" />
</create>
<convert converter="bean" match="com.User" />
</allow>
</dwr>
3.相关类和表态页代码
com.User
package com;
public class User {
private String id;
private String name;
private String password;
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;
}
}
com.MyTest
package com;
import java.util.ArrayList;
import java.util.List;
public class MyTest {
public void save(User u) {
System.out.println(u.getId());
System.out.println(u.getName());
System.out.println(u.getPassword());
}
public void wr(String st) {
System.out.println(st);
}
public String getStr(String s) {
String ss = "欢迎" + s;
System.out.println(ss);
return ss;
}
public int getInt(int i) {
return i;
}
public User getUser(String ss) {
User u = new User();
if (ss.equals("10")) {
u.setId("10");
u.setName("张三");
u.setPassword("admin");
}
return u;
}
public List getUsers(String mys) {
List list = new ArrayList();
User u = new User();
u.setId("10");
u.setName("张三");
u.setPassword("admin");
User u1 = new User();
u1.setId("11");
u1.setName("张三丰");
u1.setPassword("pwd");
list.add(u);
list.add(u1);
return list;
}
// public static void main(String[] args) {
// MyTest mt = new MyTest();
// System.out.println(mt.getUser("100").getId());
// }
}
index.html
<html>
<head>
<title>Dwr 入门案例测试</title>
<script type="text/javascript" src="dwr/interface/mtest.js"></script>
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
</head>
<body>
<input type="text" id="username" />
<button>
保存
</button>
<div id="show"></div>
</body>
<script type="text/javascript">
function save(){
//var s = {};
//s.id="ok";
//s.name="张三";
//s.password="admin";
//var s = $("username").value;
//mtest.save(s);
//mtest.getStr(s,callback);
}
function cbc(data){
alert(data.id);
}
function getInfo(){
var s = $("username").value;
//mtest.getUser("10",cbc);
mtest.getUsers("10",cba);
}
function cba(data){
alert(data.length);
alert(data[1].id);
for(var i in data){
alert(data[i].name);
}
}
function cb(msg){
//$("show").innerText = msg;
//DWRUtil.setValue("result", msg);
alert(msg);
}
//document.getElementsByTagName("button")[0].onclick=save;
document.getElementsByTagName("button")[0].onclick=getInfo;
</script>
</html>
二级联动效果代码
<script type="text/javascript">
function ab()
{
//cd.findCustomer(cb);
cd.findAllCustomer(cb);
}
function cb(data)
{
var shi=document.getElementById("shi");
for(var x in data)
{
var op=document.createElement("option");
op.innerText=data[x].name;
shi.appendChild(op);
//alert(data[x].name);
}
}
</script>
</head>
<body>
级联动态加载
<hr/>
省:<select name="sheng" id="sheng" onchange="ab()">
<option value="hn">河南</option>
<option value="hb">河北</option>
</select>
市:<select name="shi" id="shi">
<option>请选择....</option>
</select>
<br/>
<button onclick="ab()">测试</button>
4.复制所有jar文件到lib中
bsf-2.3.jar
bsh-2.0b4.jar
commons-logging-1.0.4.jar
commons-validator-1.1.4.jar
dwr.jar
jakarta-oro-2.0.8.jar
log4j-1.2.12.jar
分享到:
相关推荐
### DWR 入门与应用知识点详解 #### 一、DWR 概念与作用 DWR(Direct Web Remoting)是一种开源框架,用于简化Java服务器端与浏览器客户端之间的交互。它通过允许JavaScript直接调用Java方法,为前端开发者提供了...
**Direct Web Remoting (DWR)** 是一个简化Ajax应用程序开发的Java框架,它允许客户端JavaScript直接调用服务器端的Java方法,从而使得开发更加简单直观。DWR提供了多种推模式(Push Mode),用于实现服务器向客户端推...
### DWR中各种Java方法的调用:深入解析与实践 DWR,全称为Direct Web Remoting,是一个创新的框架,旨在简化...接下来,我们将深入探讨如何在JavaScript中实际调用这些Java方法,以及DWR在现代Web开发中的应用实践。
**DWR-J2EE简单例子详解** DWR (Direct Web Remoting) 是一个开源的Java库,它允许在Web应用程序中实现JavaScript与服务器端Java代码的双向通信。DWR简化了AJAX(Asynchronous JavaScript and XML)应用的开发,...
-- DWR框架配置 --> <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...
### DWR在AJAX中的应用及注意事项 #### 一、DWR简介与配置 DWR(Direct Web Remoting)是一种简化Ajax开发的技术框架,它可以让JavaScript像调用本地方法一样直接调用服务器端的方法,从而简化了前端和后端之间的...
### DWR使用方法详解:逐步指南 #### 一、引言 DWR(Direct Web Remoting)是一种简化Ajax开发的框架,它允许在浏览器端直接调用服务器端的方法,如同调用本地对象一样简单。本篇文章将从安装DWR、配置相关文件到...
DWR是一种简化Ajax应用开发的Java库,它允许在浏览器端直接调用服务器端的方法,从而实现了更简洁高效的前后端交互方式。通过DWR,前端开发者可以像调用本地JavaScript函数一样轻松地调用后端服务,极大地简化了开发...
**DWR框架详解** DWR (Direct Web Remoting) 是一个强大的AJAX框架,它允许JavaScript与Java在浏览器和服务器之间进行直接通信,实现了异步数据交换,从而提供了丰富的用户体验。DWR使得开发者能够轻松地在客户端...
DWR配置详解 DWR(Direct Web Remoting)是一种基于Java的AJAX框架,用于实现Web应用程序的远程方法调用。下面是DWR配置的详细解释: ...通过DWR,可以轻松实现Web应用程序的远程方法调用,提高了开发效率和系统性能。
-- DWR Servlet配置 --> <servlet> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-...
Direct Web Remoting (DWR) 是一个简化 Ajax 应用开发的框架,它允许开发者通过简单的 JavaScript 调用来访问服务器端 Java 对象。DWR 3.0 在原有基础上进行了大量的改进和完善,提供了更稳定、更高效的服务。 ####...
**DWR(Direct Web Remoting)技术详解** DWR(Direct Web Remoting)是一种JavaScript库,它允许在浏览器和服务器之间进行高效的、安全的、实时的通信。DWR使得Web应用能够像桌面应用那样,轻松地调用Java方法并...
### DWR技术及配置方案详解 #### 一、DWR技术简介 DWR(Direct Web Remoting)是一种Java技术,它使得JavaScript能够直接调用服务器端的Java方法,从而简化了Ajax应用程序的开发过程。DWR的核心思想是将服务器端的...
**DWR(Direct Web Remoting)技术详解** DWR,全称Direct Web Remoting,是一种在Web应用程序中实现Ajax(Asynchronous JavaScript and XML)技术的框架。它允许JavaScript与服务器端的Java代码进行直接交互,使得...
### DWR与Spring整合及其应用步骤详解 #### 一、DWR与Spring整合概述 DWR(Direct Web Remoting)是一种简化Ajax应用开发的技术,它可以让JavaScript直接调用服务器端的Java方法,从而大大简化了客户端与服务器端...
dwr配置文件详解 dwr.xml配置文件详解 dwr配置文件是Direct Web Remoting(DWR)的核心组件之一,它负责配置DWR的各种设置和参数。在本文中,我们将详细介绍dwr配置文件的结构和配置方法,并探讨它在实际应用中的...
-- DWR 相关依赖 --> <dependency> <groupId>com.getahead</groupId> <artifactId>dwr</artifactId> <version>3.0.2</version> </dependency> </dependencies> ``` #### 三、配置DWR 1. **在`web.xml`中配置...