DWR框架

前端之家收集整理的这篇文章主要介绍了DWR框架前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_404_1@DWR介绍:

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

@H_404_1@DWR原理:

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

@H_404_1@DWR下载:

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

DWR包含2个主要部分:

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

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

@H_404_1@DWR工作环境配置:

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

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

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

copy

    <dwr> @H_404_66@ <init>
  1. <creatorid="..."class="..."/>
  2. @H_404_66@ <converterid="..."class="..."/>
  3. </init>
  4. @H_404_66@ <allow>
  5. <createcreator="..."javascript="..."/>
  6. @H_404_66@ <convertconverter="..."match="..."/>
  7. </allow>
  8. @H_404_66@ <signatures>...</signatures>
  9. </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>

原文链接:https://www.f2er.com/ajax/163337.html

猜你在找的Ajax相关文章