DWR框架

DWZ技术学习 https://www.itkc8.com  

DWR介绍:

    DWR是一个WEB远程调用框架,利用这个框架可以让AJAX开发变得很简单,利用DWR可以在客户端利用JavaScript直接调用服务器端的Java方法并返回值给JavaScript,就想好直接本地客户端调用一样。

DWR原理:

    DWR工作原理就是Java类生成JavaScript,它的代码就像Ajax一样,用户感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端。

DWR下载:

    DWR的下载地址为:http://directwebremoting.org/dwr/download,最新版为3.0.这里下载的应用包为dwr.war,解压后将dwr.jar包放在Web工程的WEB-INF/lib/目录中。

 

DWR包含2个主要部分:

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

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

 

DWR工作环境配置:

配置web.xml:为了让DWR的核心Servlet起作用,必须在web.xml文件中配置核心Servlet,配置代码如下:

 

[c-sharp] view plaincopy

  1. <!-- dwr核心servlet -->  
  2. <listener>  
  3.     <listener-class>org.directwebremoting.servlet.DwrListener</listener-class>  
  4. </listener>  
  5. <servlet>  
  6.     <!-- dwr核心servelt实现类 -->  
  7.     <servlet-name>dwr</servlet-name>  
  8.     <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>  
  9.     <!-- 设置dwr可调式 -->  
  10.     <init-param>  
  11.         <param-name>debug</param-name>  
  12.         <param-value>true</param-value>  
  13.     </init-param>  
  14.         <load-on-startup>1</load-on-startup>  
  15. </servlet>  
  16. lt;servlet-mapping>  
  17.     <servlet-name>dwr</servlet-name>  
  18.     <url-pattern>/dwr/*</url-pattern>  
  19. </servlet-mapping>  

 

dwr.xml是用来配置DWR的文件,默认是将其放在WEB-INF文件夹下,它的配置代码如下:

 

[c-sharp] view plaincopy

  1. <dwr>  
  2.     <init>  
  3.     <creator id="..." class="..."/>  
  4.     <converter id="..." class="..."/>  
  5.     </init>  
  6.     <allow>  
  7.     <create creator="..." javascript="..."/>  
  8.     <convert converter="..." match="..."/>  
  9.     </allow>  
  10.     <signatures>...</signatures>  
  11. </dwr>  

 

1.<init>标签:在初始化部分用来创建远程beans,而且这个类能被用来以某种过程转换。如果想定义一个新的creator或者converter,就要在此被声明,在init部分的定义只是告诉DWR这些扩展类的存在,给出了如何使用的信心。这种方式很像Java中的import语句,多数类需要在使用前先import一下。每个creator和converter都用id属性,以便在后面使用时直接饮用id值。

2.<allow>标签:allow部分定义了DWR能够创建和转换的类,每一个在类中被调用的方法需要一个create元素,可以使用“new”关键字或者Spring框架创建creator。<allow>元素的结构如下:

<allow>
 <create creator = "..." javascript=".." scope="...">
 <param name="..." value="..."/>
 <auth method="..." role="..."/>
 <exclude method="..."/>
 <include method="..."/>
</create>
</allow>

creator的属性: 

a).creator="new":创建对象,使用new创建对象安全(DWR创建的对象生存时间越短,多次调用中间的值不一致的错误机会越少),内存消耗低(如果站点用户量非常大,这个创造器可以减少VM的内存溢出).

b).creator="none":不创建对象,可能在使用的scope不是“page”,并在前面已经把这个对象创建到这个scope中了,这时就不需要在创建对象了。还有一种情况是要调用的方法是静态的,这时也不需要创建对象,DWR会在调用创建器之前先检查一下这个方法是不是静态的。

   对于上述 a、b两种情况,仍需要class参数,用来告诉DWR它是在操作的对象类型是什么。

javascript="aaa"在浏览器里创建的对象名,避免使用JavaScript保留字。这个名字将在页面里作为js被导入。例如:

<create creator="new" javascript="service">
<param name="class" value="hellowWorld.service"/>
</create>
在html或jsp页面中使用方法为
<html>
<head>...
<script type="text/javascipt" src="dwr/interface/service.js"> 

scope属性:
和servlet的scope一样,它允许指定哪个bean是可以获得的。选项可以是application、session、request和page。scope选项是可选的,默认为page。

param元素:被用来指定创造器的其他参数,每种构造器各有不同,“new”创造器需要知道创建的对象类型是什么。

include和exclude元素:允许一个创造器去限制进入类的方法。一个创造器必须指定include列表或exclude列表之一。如果是include列表则暗示默认的访问策略是“拒绝”,include中指定的方法列表是允许访问的方法。如果是exclude列表则暗示默认的访问策略是“允许”,exclude中的每个方法就是拒绝访问的方法。例如:

<create creator="new" javascript="service">
<param name="class" value="com.ajax.dwr.AjaxService"/>
<include method="sayHello"/>
</create>
说明只能在DWR中使用service的sayHello方法。

 

auth元素:
允许指定一个J2EE的角色作为将来的访问控制检查,例如:
<create creator="new" javascript="service">
<param name="class" value="com.ajax.dwr.AjaxService"/>
<auth method="sayHello" role="admin"/>
</create>

 

<signatures>标签:DWR使用反射机制在装换过程中找到它应该使用的类型。有时无法获得信息的类型,在这种情况下需要在此处用方法签名给予暗示。signatures段使用DWR能确定集合中存放的数据类型。例如下面的定义中我们无法知道list中存放的是什么类型。
public class Check{
 public void setResults(List list){...}
}
signatures段暗示DWR应该用什么类型去处理。格式与JDK5中的泛型一样,它的定义原型为:
<signatures>
<![CDATA[import java.util.List;import com.example.Check;Check.setResults(List<Integer> list);]]>
</signatures>

DWZ​​​​​​​技术学习 https://www.itkc8.com  ​​​​​​​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值