DWR的环境搭建与第一个入门程序HelloWorld


近日工作中用到DWR,前段时间研究了一下,过段时间没有接触再入手发现有点生疏,于是今天我就打算在温习一下。

DWR是一个可以允许你去创建AJAXWEB站点的JAVA开源库。它可以让你在浏览器中的Javascript代码调用Web服务器上的Java代码,就像在Java代码就在浏览器中一样。

DWR包含2个主要部分:

l 一个运行在服务器端的Java Servlet,它处理请求并且向浏览器发回响应。

l 运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页。

 

DWR工作原理是通过动态把Java类生成为Javascript。它的代码就像Ajax魔法一样,你感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。这种从Java到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。 Java从根本上讲是同步机制,然而AJAX却是异步的。所以你调用远程方法时,当数据已经从网络上返回的时候,你要提供有反调(callback)功能的DWR。

 

好了,就介绍这么多了,做出东西才是王道!

先去官网下载DWR 的jar包,现在最新的是3.0RC2,给出链接地址自己去下载吧:http://directwebremoting.org/dwr/downloads/,建议下载war文件,里面既有例子,也有jar包,何乐而不为呢?!

好了,新建一个web工程,将其命名为DWRDemo,如下图所示:

DWR的环境搭建与第一个入门程序HelloWorld_第1张图片

                                     图1

解压缩下载的文件,将dwr.jar和commons-logging-1.0.4.jar放在WebRoot/WEB-INF/lib下,少了commons-logging-1.0.4.jar会报错的,开始没加这个jar,害我找了半天的错误,郁闷死我了

DWR的环境搭建与第一个入门程序HelloWorld_第2张图片

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

 

好了,新建一个service,定义一个方法sayHello(),并传入一个参数,返回一个String类型的字符串,代码如下所示:

 

package helloWorld;

 

public class Service {

     public  String sayHello(StringyourName) {

       return  "Hello World ," + yourName;

   }

}

接着在web.xml配置文件的同目录下另外新建一个dwr.xml文件,用来配置文件,如下所示:

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE dwrPUBLIC "-//GetAheadLimited//DTD Direct Web Remoting 2.0//EN"

                    "http://www.getahead.ltd.uk/dwr/dwr20.dtd">

 <dwr>

    <allow>

        <create creator="new"javascript="service">

              <paramname="class" value="helloWorld.Service"/>

        </create>

       </allow>

 </dwr>

其中,要将这个service写入进去,value为”包名.类名”的格式!

写到这你就可以测试你写的service了,在Myeclipse中部署好以后,打开浏览器,在地址栏输入地址http://localhost:8000/DWRDemo/dwr/,浏览器出现如下所示:

DWR的环境搭建与第一个入门程序HelloWorld_第3张图片                                         

                                                                图3

点击service,跳转出来的页面会展现之前在service中定义的一个方法sayHello(),在括号的双引号中输入”Lucy”,点击Execute会出现“Hello World , Lucy”,如下所示:

 DWR的环境搭建与第一个入门程序HelloWorld_第4张图片

                                                              图4

 

接下来要编写一个JSP文件,在JavaScript中直接调用service这个类的方法,我就直接在index.jsp这个文件里直接写了,如下所示:


 

<%@page language="java"import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTMLPUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">

<html>

  <head>

    <basehref="<%=basePath%>">

    <title>demo</title>

    <script type='text/javascript'src='/DWRDemo/dwr/interface/service.js'></script>

    <script type='text/javascript'src='/DWRDemo/dwr/engine.js'></script>

    <script type='text/javascript'src='/DWRDemo/dwr/util.js'></script>

    <scripttype="text/javascript" src="dwr/interface/service.js"></script>

    <scripttype="text/javascript">

        functionfirstDwr(){

       var firstName=document.forms[0].elements[0].value;

        service.sayHello(firstName,callBackHello);

       }

    function callBackHello(data){

            alert(data);

       }

    </script>

  </head>

  <body>

  <form>

    请输入你的姓名:

    <input type="text"id=“name”name="firstName"  >

    <inputtype="button" name="button"value="提交"onclick="firstDwr()">

    </form>

  </body>

</html>

 

其中我要说明的是engine.js, util.js ,service.js这3个JavaScript文件,engine.js是必须加入的,util.js是可选的,service.js是根据service这个类自动生成的js文件,engine.js和util.js都在dwr.jar这个文件中 ,有人会问怎么添加路径才是正确的呢,我当初找这个也找了很久,后来发现运行程序出现图4这个页面时会自动给出,你第一次运行时有没有发现这一点呢?呵呵!

好了,把这3个路径添加进去,打开浏览器,输入地址http://localhost:8000/DWRDemo/index.jsp,输入Jack,出现这个页面的时候,恭喜你,你已经算是入门了!

DWR的环境搭建与第一个入门程序HelloWorld_第5张图片          

                                                                                   图5

附上本项目结构图:

DWR的环境搭建与第一个入门程序HelloWorld_第6张图片

                     图6

下面附上官网文档的链接,你可以去官网仔细看看文档:http://directwebremoting.org/dwr/introduction/getting-

started.html


最后附上本文章的下载地址,如果需要希望你去下载,算是对我努力的支持吧,谢谢啦:点我下载



本文已移至http://www.it161.com/




你可能感兴趣的:(JavaScript,java,浏览器,service,DWR)