dwr的入门

发表时间:2017-05-16 15:51:34 浏览量( 18 ) 留言数( 0 )

学习目标:

1、了解dwr

2、掌握使用dwr


学习过程:

一、dwr简介

dwr是一个很神奇的java框架,它可以在浏览器上使用javascript“直接”调用服务器端的java的代码。我们之前介绍过javascript和java是两种完全不懂语言,两者之间不可能可以互相调用,dwr能够给用户感觉是js直接调用java只不过是一种错觉,它真正实现的原理其实就是使用了ajax技术。在javascript和java直接,dwr就作为一个转换器。

DWR包含 2个主要部分: 

  1. 运行在服务器端的核心Servlet,负责处理请求并且向浏览器发回响应。

  2. 运行在浏览器端的JavaScript,负责发送请求和动态更新网页。

二、实现第一个dwr例子

我们还是通过一个hello world的示例讲解一下dwr到底是如何运行的。

1、导包。把核心包dwr.jar和commons-logging-1.1.1.jar包导入就可以了。

2、配置web.xml,代码如下:

<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>

3、实现java业务代码

public class HelloService {
	public String sayHello(String name) {
		System.out.println(name);
		return "hello " + name;
	}
}


4、建立dwr的配置文件dwr.xml,文件与web.xml在同一目录下,代码如下:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 
2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
	<allow>
		<create creator="new" javascript="service">
			<param name="class" value="com.biz.HelloService" />
		</create>
	</allow>
</dwr>


5、测试

在浏览器中输入:http://localhost/项目名称/dwr,就可以进入测试界面了。就可以看到测试界面了:

attcontent/806142ca-8b45-40cd-b3da-bd3d15dda806.png

点击service超链接就可以看到我们定义的sayHello方法了。

attcontent/16bfd0d9-df1e-4b1b-aae6-f79475e16144.png


6、jsp页面调用

注意上面的测试界面的这句:

attcontent/ce16a151-46cf-44d2-bab3-988a4a9a9cf1.png

要使用这个类首先要导入这两个js。

还要注意的是js里的sayHello和java类中定义的方法有一个区别,会多出一个参数,这个参数就是定义回调方法的。 完整代码如下:

<%@ 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>
<script type='text/javascript' src='/dwrstu/dwr/interface/service.js'></script>
<script type='text/javascript' src='/dwrstu/dwr/engine.js'></script>
<script type="text/javascript">
   function say(){
       var username=document.getElementById("username").value; 
       //(...,回调方法)
       service.sayHello(username,callback);
   }
   function callback(data){
      alert(data);
   }

</script>

</head>

<body>
   <input id="username" >
    <input id="sayhi" type="button" value="say" onclick="say()">
</body>
</html>

我们第一个dwr的应用程序就实现了。