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,配置代码如下:
- <!--dwr核心servlet-->
- <listener>
- <listener-class>org.directwebremoting.servlet.DwrListener</listener-class>
@H_404_66@ </listener>
- <servlet>
@H_404_66@ <!--dwr核心servelt实现类-->
- <servlet-name>dwr</servlet-name>
@H_404_66@ <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
- <!--设置dwr可调式-->
@H_404_66@ <init-param>
- <param-name>debug</param-name>
@H_404_66@ <param-value>true</param-value>
- </init-param>
@H_404_66@ <load-on-startup>1</load-on-startup>
- </servlet>
@H_404_66@ lt;servlet-mapping>
- <url-pattern>/dwr/*</url-pattern>
- </servlet-mapping>
dwr.xml是用来配置DWR的文件,默认是将其放在WEB-INF文件夹下,它的配置代码如下:
copy
<dwr>
@H_404_66@ <init>
- <creatorid="..."class="..."/>
@H_404_66@ <converterid="..."class="..."/>
- </init>
@H_404_66@ <allow>
- <createcreator="..."javascript="..."/>
@H_404_66@ <convertconverter="..."match="..."/>
- </allow>
@H_404_66@ <signatures>...</signatures>
- </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