`
zengshaotao
  • 浏览: 787135 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

dwr

    博客分类:
  • DWR
 
阅读更多

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

RPC(Remote Procedure Call Protocol)——远程过程调用协议
,它是一种通过网络从远程计算机程序上请求服务,而不需要了
解底层网络技术的协议。RPC协议假定某些传输协议的存在,
如TCP或UDP,为通信程序之间携带信息数据。
在OSI网络通信模型中,RPC跨越了传输层和应用层。
RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

OSI是Open System Interconnect的缩写,意为开放式系统互联。
国际标准组织(国际标准化组织)制定了OSI模型。
这个模型把网络通信的工作分为7层,分别是物理层、数据链路
层、网络层、传输层、会话层、表示层和应用层。

负责处理客户端请求,并呼叫java物件的是DWRServlet,DWR其实
有些model2的味道,只是view这一层比较弱,因为前端数据的
获取是通过javascript程序代码来完成的。

在mvc模型中,通过在web.xml文件里加入中央servlet的配置
获取客户端的所有请求。然后找寻第三方的配置文件,
进行action的分发。对于dwr也类似,需要在web.xml加入dwr的
中央控制器,然后读取dwr的配置文件,进行远程服务器端或者
分布式应用程序的调用。
在web.xml中加入DWRServlet的配置:
<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <display-name>  ajaxDWR</display-name>  <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    <init-param>
      <description>
      </description>
      <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></web-app>

class里的main函数是为了测试用的。真正发布运行调用的是客户
端的请求。

package onlyfun.caterpillar; public class Hello {  public String hello(String name) {      return "哈囉!" + name + "!您的第一個DWR!";    }}

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr>  <allow>    <create creator="new" javascript="Hello">      <param name="class" value="onlyfun.caterpillar.Hello" />    </create>  </allow></dwr>


creator設定為new,表示使用Hello的無參數建構子來生成物件,javascript設定為Hello,表示客戶端JavaScript程式可以使用Hello來呼叫對應的onlyfun.caterpillar.Hello物件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=BIG5">  <title>第一個DWR程式</title>  <script type='text/javascript' src='dwr/interface/Hello.js'></script>  <script type='text/javascript' src='dwr/engine.js'></script> 
<script type='text/javascript' src='dwr/util.js'></script> 
<script type='text/javascript' src='hello.js'></script></head><body>
<input id="user" type="text" />
<input type='button' value='哈囉' onclick='hello();' />
 <div id="result"></div> </body></html>
dwr/interface/Hello.js是由DWRServlet根據dwr.xml中的設定生成的,
engine.js負責客戶端伺服端溝通,
util.js是一些好用的JavaScript程式,可以讓您少寫很多JavaScript。
function hello() {
   var user = $('user').value;
    Hello.hello(user, callback);}
function callback(msg) {   DWRUtil.setValue('result', msg);}
${'user'}取得輸入欄位的DOM物件
,value取得當中的欄位值,而後呼叫Hello.hello(),並將value當作參數傳送… 結果是呼叫Server端的Hello Java物件,當結果傳回後,會呼叫JavaScript的callback函式,DWRUtil的setValue()方法會將傳回的msg設定給指定 id的DOM

package onlyfun.caterpillar;
import java.util.ResourceBundle;
public class Book {  private ResourceBundle resource;   
public Book() {
    resource = ResourceBundle.getBundle("book");   }
          public String getDescription(String key) {
    retn resource.getString(key);  }} 
從程式中就知道,它會去抓book_zh_TW.properties的資料。
获取本地的一些资源文件。对于存在中文的资源文件,需要
使用bin目录下的native2ascii工具进行转换以支持国际化。 

 <div id="spring" onmouseover="getBookData(this);" onmouseout="clearData();"><a href="http://www.gotop.com.tw/waweb2004/home/home.aspx?pg=HM010X&bn=ACL021000">
<small><img style="border: 0px solid ; width: 80px; height: 110px; float: left;" alt="Spring 技術手冊" title="Spring 技術手冊" src="images/SpringTech_S.jpg" hspace="10" vspace="2"></small></a></div>

4、多dwr.xml文件的配置

可能有几种情况,我们一一列举。 一个servlet,多个dwr.xml配置文件;
多个servlet,每个servlet对应一个或多个dwr.xml.

一个servlet,多个dwr.xml配置文件;


java代码:  

<servlet>

    <servlet-name>dwr-invoker</servlet-name>

    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

    <init-param>

      <param-name>config-1</param-name>

      <param-value>WEB-INF/dwr1.xml</param-value>

    </init-param>

    <init-param>

      <param-name>config-2</param-name>

      <param-value>WEB-INF/dwr2.xml</param-value>

    </init-param>

</servlet>

 
在这种配置下,param-name的值必须以config开头。param-name可以有>=0个。如果没有param-name,那么将会读取 WEB-INF/dwr.xml。如果有大于零个param-name,那么WEB-INF/dwr.xml文件将不会被读取。

多个servlet,每个servlet对应一个或多个dwr.xml


java代码:  

<servlet>

   <servlet-name>dwr-invoker</servlet-name>

    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

<!--用classes/dwr.xml-->

</servlet>

<servlet>

   <servlet-name>dwr-invoker1</servlet-name>

   <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

   <init-param>

     <param-name>config-admin</param-name>

     <param-value>WEB-INF/dwr1.xml</param-value>

   </init-param>

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

<servlet-mapping>

   <servlet-name>dwr-invoker1</servlet-name>

   <url-pattern>/dwr1/*</url-pattern>

</servlet-mapping>

 
在这种情况下,我们可以根据J2EE security来控制权限,针对不同url,加不同的角色

 

分享到:
评论

相关推荐

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet-name&gt;dwr-invoker org.directwebremoting.servlet.DwrServlet &lt;init-param&gt; &lt;param-name&gt;debug&lt;/param-name&gt; ...

    dwr所需要的jar包

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时通信,无需使用插件或复杂的JavaScript框架。DWR简化了AJAX(Asynchronous JavaScript and XML)开发,使开发者可以像...

    dwr实例,从后台取数据显示

    Direct Web Remoting (DWR) 是一种开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,从而实现动态Web应用程序。DWR的主要功能是通过AJAX技术在客户端和服务器之间进行实时通信,使得用户界面...

    DWR3实现服务器端向客户端精确推送消息

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在Web浏览器中直接调用Java方法,从而实现实时的、双向的通信。在“DWR3实现服务器端向客户端精确推送消息”这一主题中,我们将深入探讨如何利用DWR3进行...

    DWR.xml配置文件说明书(含源码)

    DWR.xml配置文件说明书 1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    DWR中文文档DWR

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行直接的交互,从而实现在Web应用程序中的Ajax功能。DWR的主要目标是简化前后端的数据交换,提高用户体验,使得Web应用能够像桌面...

    DWR实现的新消息定时提醒

    DWR(Direct Web Remoting)是一种JavaScript库,它允许JavaScript代码在客户端与服务器端进行直接交互,从而实现实时Web应用程序。在这个特定的场景中,我们利用DWR来实现一个新消息的定时提醒功能,这在许多Web...

    DWR(包括engine.js+util.js).rar

    这个压缩包包含了DWR的核心组件`engine.js`和辅助库`util.js`,它们是实现DWR功能的关键。 `engine.js`是DWR的核心脚本,它实现了JavaScript和Java之间的远程调用(Remote Procedure Calls, RPC)。这个文件处理了...

    dwr和简单的文件上传

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。在这个场景中,我们将讨论如何使用DWR来实现简单的文件上传功能。 文件上传是Web...

    DWR 初始,返回字符串&对象&列表

    DWR(Direct Web Remoting)是一种JavaScript到Java的远程调用技术,允许Web应用程序在客户端与服务器之间进行实时通信,而无需刷新整个页面。DWR的出现极大地提升了Web应用的用户体验,因为它允许开发者在前端与...

    dwr的例子 反向AJAX 实现时时提醒

    Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行安全、高效的异步通信,即所谓的“反向AJAX”或“Comet”技术。DWR使得JavaScript能够调用服务器端的Java方法,就像它们是本地函数一样...

    dwr笔记 dwr自学资料

    DWR (Direct Web Remoting) 是一种开源Java技术,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用服务器端的Java方法,极大地简化了客户端和服务器端的数据交换。本笔记将...

    dwr实现ajax功能ajax+dwr

    **DWR(Direct Web Remoting)**是一种Java技术,它允许Web应用程序在客户端与服务器之间进行实时通信,而无需刷新整个页面。通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous ...

    dwr demo dwr简单使用

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。DWR简化了AJAX(Asynchronous JavaScript and XML)的开发,使得开发者可以像调用...

    springboot整合dwr实现js调用java方法

    SpringBoot整合Direct Web Remoting (DWR)是一个常见的技术实践,它允许JavaScript在浏览器端直接调用服务器端的Java方法,极大地增强了Web应用的交互性。在这个过程中,我们通常会结合使用FreeMarker或JSP作为视...

    springMVC+dwr技术实现消息推送实例

    SpringMVC 和 DWR(Direct Web Remoting)是两种在Web开发中用于增强交互性的技术。SpringMVC作为Spring框架的一部分,主要用于构建后端服务,而DWR则是一种JavaScript库,允许JavaScript与Java服务器进行实时通信,...

    dwr1+dwr2+dwr3 jar包

    这个压缩包包含了DWR的三个主要版本:DWR1.0、DWR2.0和DWR3.0的jar包,这些jar包是运行DWR应用的核心组件。 DWR1.0: DWR1.0是DWR项目的早期版本,主要目标是简化Web应用中的异步通信。在这个版本中,DWR提供了一个...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    这个压缩包包含了DWR的三个关键组件:DWR3.0.jar,DWR的实例war文件,以及DWR2.0的中文说明文档。以下是关于这些组件的详细知识: 1. **DWR3.0.jar**: DWR3.0.jar是DWR框架的核心库,包含所有必需的类和接口,...

    使用dwr+spring实现消息推送

    在本教程中,我们将探讨如何利用Direct Web Remoting (DWR) 和Spring框架来实现这样的功能。 DWR是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时的、异步的通信,类似于Ajax的功能,但更加强大。...

Global site tag (gtag.js) - Google Analytics