dwr框架使用初步

DWR(Direct Web Remoting)是一个用于改善Web页面与Java类交互的远程服务端Ajax开元框架,可以帮助开发人员开发包含Ajax技术的网站。它可以允许在浏览器里的代码调用运行在Web服务器上的Java方法,就像它就在浏览器中一样。它包含两个主要部分:一部分是允许JavaScript从Web服务器上一个遵循Ajax原则的Servlet或Action中获取数据;另一部分是一个JavaScript库可以帮助网站开发人员轻松利用获取数据来动态改变网页中的内容。

DWR采用了一个类似Ajax的新方法来动态生成基于java类的JavaScript代码,这样Web开发人员就可以在JavaScript理使用java代码,但是java代码运行在Web服务器段而且可以自由访问Web服务器资源,那么,处于安全考虑,Web开法阵必须适当的配置哪些java类可以安全的被外部使用。

DWR是一个jar文件,用户如果在自己的项目中使用到DWR,可以从官网中下载,http://directwebremoting.org/dwr/,项目中和dwr.jar在一起的另一个文件时commons-logging-1.x.x.jar是日志控制文件,如果没有这个jar文件,那么控制台会报告日志控制方面的错误。

配置DWR框架
Struts2中要使用DWR框架,有三个步骤要完成,一是将dwr.jar文件导入到WEB-INF/lib目录下;二是在web.xml中增减DwrServlet配置信息;三是在WEB-INF下新建一个文件名为dwr.xml的文件,用户指定Javascript要访问的Action。实例如下:

创建web项目,并将dwr.jar和common-logging-1.x.x.jar文件复制到WEB-INF/lib目录下,并构建到项目的路径下,创建
JavaScript访问的java类,HelloWorld.java,HelloWorld.java是一个很普通的Action。其代码如下:
package com.dwr;

import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
private static final long serialVersionUID = 1;
private String name;
public HelloWorld() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
        public String sayHello(String name){
    return "hello,"+name;
    }

}

类中提供了一个名为sayHello的方法,其作用是可以接受客户端传过来的数据,并对其做相应的处理,处理的结构将由DWR交给客户端的JavaScript做显示。接下来的问题是DWR要起到作用,还需要配置两个xml文件,一个是web.xml,其代

码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>dwr-invoker</servlet-name>

<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<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>
 <display-name></display-name>
 <welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
 </filter>
 <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>
要遭项目中使用DWR,必须在web.xml中增加DwrServlet的配置<param-name>debug</param-name>的作用是设置是否开启
调试模式。true为开启。
接下来看另一个配置文件dwr.xml,这也是一个不可缺少的配置文件,该文件指定DWR要去访问哪个java类,dwr.xml和
web.xml放在同一个目录下,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://directwebremoting.org/dwr/dwr30.dtd">
<dwr>
<allow>
<create creator="new" javascript="Hello">
<param name="class" value="com.dwr.HelloWorld" />
<include method="sayHello"/>
</create>
</allow>
</dwr>  
标签解释如下:
<dwr>标签用来包含DWR所有的配置信息,处于最顶层。每一次配置时,具体设置的是<dwr>里面的标签
<allow>该标签中包含可以暴漏给Javascript访问的东西。
<create>标签中指定Javascript可以访问的java类,并定义DWR应当如何获取要得到远程类的实例。creator="new" 属性
指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获取实例。Javascript="textClass"属性指定
Javascript代码访问对象时使用的名称。
<param>标签指定要公开给JavaScript的java类名
<include>标签指定要公开给Javascript的方法,不指定则公开所有的方法。

index.jsp视图:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DWR's HelloWorld</title>
<script type='text/javascript' src='/struts2dwr/dwr/engine.js'></script>
  <script type='text/javascript' src='/struts2dwr/dwr/interface/Hello.js'></script>
<script type='text/javascript' src='/struts2dwr/dwr/util.js'></script>
<script type="text/javascript">
   function hello(){   
       var user = $('user').value;   
       Hello.sayHello(user,callback);   
      }   
      function callback(msg){   
      dwr.util.setValue('result',msg);   
      }  
</script>
</head>
<body>
<input id="user" type="text" />
<input type='button' value='打招呼' οnclick='hello();' />
<div id="result"></div>
</body>
</html>

上面文件中引用的js文件是由DWR自动生成的,关于这些js文件,可以再DWR的调试中看到.




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值