java dwr

java DWR(Direct Web Remoting)

原文地址:http://fanzhongyun.iteye.com/blog/1222398

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端 Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使 用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。 

DWR包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet 中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来 动态改变网页的内容. 
因为DWR框架也是遵循AJAX原则的,因此使用DWR框架也是能实现页面不刷新,不跳转,而改变页面内容的。下面来看一下DWR的实现过程. 

首先来写一个测试类,这个类是将要被DWR框架调用的: 
Java代码  收藏代码
  1. package com.dwr;  
  2.   
  3. import java.text.Format;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6.   
  7. public class Information {  
  8.   
  9.     public static String getInformation(){  
  10.           
  11.         Date date = new Date();  
  12.         Format frm = new SimpleDateFormat("yyyyMMddHHmmss");  
  13.         String nowTime = frm.format(date);  
  14.         String year    = nowTime.substring(0,4)   + "年";  
  15.         String month   = nowTime.substring(4,6)   + "月";  
  16.         String day     = nowTime.substring(6,8)   + "日";  
  17.         String hour    = nowTime.substring(8,10)  + ":";  
  18.         String minue   = nowTime.substring(10,12) + ":";  
  19.         String second  = nowTime.substring(12,14);  
  20.           
  21.         return year + month + day + hour + minue + second;  
  22.   
  23.     }  
  24.       
  25.     public static String getInformation(String parameter){  
  26.           
  27.         return "My name is " + parameter;  
  28.     }  
  29. }  



配置一下WEB-INF目录下的web.xml文件: 
Java代码  收藏代码
  1. <servlet>  
  2.    <servlet-name>dwr-invoker</servlet-name>  
  3.    
  4.    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>  
  5.    <init-param>  
  6.      <param-name>debug</param-name>  
  7.      <param-value>true</param-value>  
  8.    </init-param>  
  9.    <init-param>  
  10.     <param-name>crossDomainSessionSecurity</param-name>  
  11.     <param-value>false</param-value>  
  12.    </init-param>  
  13.    <init-param>  
  14.     <param-name>allowScriptTagRemoting</param-name>  
  15.     <param-value>true</param-value>  
  16.    </init-param>  
  17.      
  18.  </servlet>  
  19.  <servlet-mapping>  
  20.    <servlet-name>dwr-invoker</servlet-name>  
  21.    <url-pattern>/dwr/*</url-pattern>  
  22.  </servlet-mapping>  


接着需要在WEB-INF目录下新建一个dwr.xml文件,并对其进行如下配置: 
Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">   
  3.   
  4. <dwr>  
  5.   
  6.     <allow>  
  7.         <create javascript="obtainMsg" creator="none">  
  8.             <param name="class" value="com.dwr.Information" />  
  9.         </create>  
  10.     </allow>  
  11.   
  12. </dwr>  


dwr配置属性参考: 
creator属性 是必须的 - 它用来指定使用那种创造器。 
默认情况下DWR1.1有8种创造器。它们是: 
•new:      用Java的new关键字创造对象 
•none:     它不创建对象 
•scripted: 通过BSF使用脚本语言创建对象 
•spring:   通过Spring框架访问Bean 
•jsf:      使用JSF的Bean 
•struts:   使用Struts的FormBean 
•pageflow: 访问Beehive或Weblogic的PageFlow 
javascript属性 用于指定浏览器中这个被创造出来的对象的名字。注意不能使用Javascript的关键字 
param元素 被用来指定创造器的其他参数 
param元素中value属性的值是所要调用的类的url,即类所在的路径 
接下来可以先将DWR所需要的dwr.jar和commons-logging.jar两个包导入项目中,这两个包在下面的附件中已经有了的。 
好了,工作做得差不多了,先将项目部署好,然后在浏览器中访问以下地址: 
http://localhost:5981/DWR/dwr 
注:我的Tomcat端口是5981,项目名是DWR 
这时候会进入到http://localhost:5981/DWR/dwr/index.html这个地址,接下来是将这个页面上的超链接点开,下面是该页面顶部的部分信息,你需将页面上与js连接相关的代码拷贝下来以备后用。 
以下是打开超链接后的页面上的部分内容: 
Methods For: obtainMsg (com.dwr.Information) 
To use this class in your javascript you will need the following script includes: 
  <script type='text/javascript' src='/DWR/dwr/interface/obtainMsg.js'></script> 
  <script type='text/javascript' src='/DWR/dwr/engine.js'></script> 
In addition there is an optional utility script: 
  <script type='text/javascript' src='/DWR/dwr/util.js'></script> 
— —— 比如我需要拷贝的代码是: 
<script type='text/javascript' src='/DWR/dwr/interface/obtainMsg.js'></script> 
<script type='text/javascript' src='/DWR/dwr/engine.js'></script> 
<script type='text/javascript' src='/DWR/dwr/util.js'></script> 
新建一个测试的jsp,并将拷贝的代码粘贴到这个jsp中: 
Java代码  收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3.   
  4. <html>  
  5.   <head>  
  6.     <title>DWR Page</title>  
  7.     <script type='text/javascript' src='/DWR/dwr/interface/obtainMsg.js'></script>  
  8.     <script type='text/javascript' src='/DWR/dwr/engine.js'></script>  
  9.     <script type='text/javascript' src='/DWR/dwr/util.js'></script>  
  10.     <script type="text/javascript">  
  11.         function btn(){  
  12.             var uname = document.getElementById("username").value;  
  13.             //下面是通过DWR来访问刚才的测试类Information的  
  14.             //其中参数time是调用方法后的返回值,uname是传过去的参数,myname是返回值  
  15.             //需要注意的是以DWR的方式来调用方法的时候需要用到回调函数来处理  
  16.             obtainMsg.getInformation(function(time){  
  17.                 obtainMsg.getInformation(uname,{callback:function(myname){  
  18.                     document.getElementById("msg").innerHTML = "<HR><BR>" + myname + "<BR>" + time;  
  19.                 }  
  20.                 });  
  21.             });  
  22.         }  
  23.     </script>  
  24.   </head>  
  25.     
  26.   <body>  
  27.     name:  
  28.     <input type="text" id="username" />  
  29.     <input type="button" οnclick="btn()" value=" Submit " />  
  30.     <br><br>  
  31.     <div id="msg"></div>  
  32.   </body>  
  33. </html>  


好了,DWR到此就完成了。 
需要补充说明一下的是,需要连接的js脚本除了像上面那种通过访问拷贝得到之外,你也可以自己来写,注意,是只需要写js的链接代码就行了,源码是由dwr框架提供的,不需要你自己来写的。其中有两个js脚本是不能少的: 

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

另外的那些js脚本,是根据dwr.xml配置文件中的javascript属性的值来确认的,比如我在我的dwr.xml文件中配置的是javascript="obtainMsg",因此,我需要连接的js就是: 
<script type='text/javascript' src='/DWR/dwr/interface/obtainMsg.js'></script> 

同时dwr.xml文件中配置的javascript属性的值(我这里配置的是javascript="obtainMsg")obtainMsg也是一个类或者是一个对象,我们在DWR中就是通过这个名字(obtainMsg)来访问这个类或者是对象里面的方法的 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值