DWR框架--示例

来源:互联网 发布:小鱼儿主页最近域名 编辑:程序博客网 时间:2024/06/05 13:23
     DWR(Direct Web Remoting)是一个用于改善Web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含Ajax技术的网站。
    它可以允许在浏览器端的代码调用运行在Web服务器上的Java方法,就像它在浏览器里一样。
    它包含两个主要部分:
        ①、允许JavaScript从web服务器上遵循了Ajax原则的Servlet或者Action中获取 数据

        ②、一个javascript库可以帮助网站开发人员轻松的利用获取的数据来动态改变网页的内容。

DWR下载地址:http://directwebremoting.org/dwr/downloads/

eg:
一:首先导入dwr.jar包、配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" 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_2_5.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><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>
二、写java类
package com.dwr;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld extends ActionSupport {/** *  */private static final long serialVersionUID = 1L;private String name;public HelloWorld() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String sayHello(String name) {return "Hello, " + name;}
public String sayQuestion(String name) {
return "Hello, " + name + "...How old are you?";
}
}

三、dwr.xml的配置

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"    "http://getahead.org/dwr/dwr30.dtd"><dwr><allow><create creator="new" javascript="Hello"><param name="class" value="com.dwr.HelloWorld" /><include method="sayHello"/><include method="sayQuestion"/></create></allow></dwr>  


四、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,function (msg){         dwr.util.setValue('result',msg);          }       function question(){       var user = $('user').value;          Hello.sayQuestion(user,function(massage){       dwr.util.setValue('question',massage)       });          }</script></head><body><input id="user" type="text" /><input type='button' value='打招呼' onclick='hello();' /><div id="result"></div><input type="button" value="提问" onclick="question();"/><div id="question"></div></body></html>



DWR和JQuery配合使用
<%@ 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="jq/jquery-1.6.2.js"></script><script type="text/javascript">$(document).ready(function($("#hi").click(function(){var user = $("#user").val();Hello.sayHello(user,callback);});function callback(msg){   $("#result").text(msg); }  });</script></head><body><input id="user" type="text" /><input type='button' value='打招呼' id="hi" /><div id="result"></div></body></html>


步骤:首先配置DwrServlet到web.xml中,
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value> 
</init-param>
这里:指定作用是设置是否开启调试模式。true开启,false关闭。
     然后新建dwr.xml文件中用户指定Javascript要访问的Action
     最后写页面
<script type='text/javascript' src='/struts2dwr/dwr/engine.js' />
  <script type='text/javascript'src='/struts2dwr/dwr/interface/Hello.js' />
<script type='text/javascript' src='/struts2dwr/dwr/util.js' />
这里:调用的js文件是DWR自动完成的,这些js文件的地址,可以在DWR的调试页面中看到。启动服务器,输入http://localhost:8080/项目名称/dwr。就能进入调试页面。


 注意:dwr.xml 和 web.xml在同一个目录。
<dwr>内部标签:
<allow>标记中包括可以暴露给Javascript访问的东西。
<create>标记中指定Javascript中可以访问的Java类,并定义DWR应当如何获取要进行远程的类的实例。create="new"属性指定Java类实例是生成方式,new意味着DWR应当调用类的默认构造器来获取实例。Javascript="testClass"属性指定Javascript代码访问对象时使用的名称。
<param>标记指定要公开给Javascript的Java类名。
<include>标记指定要公开给Javascript的方法。不指定则公开所有方法。
<exclude>标记指定禁止被访问的方法,与include相反。
<convertor>标记负责这些方法的参数和返回类型。convertor元素的作用是告诉DWR在服务器端Java对象表示和序列化的Javascript之间如何转换数据类型。DWR自动的在Java和JavaScript表示之间调整简单数据类型。这些类型包括Java原生类型和封装类型以及String、Date、数组、集合类型。DWR同时也能把JavaBean转换成Javascript表示,但是出于安全性,要求显示配置,<convertor>标记就是完成该功能。<convertor>标记中有两个重要的属性converter和match,作用是:使converter="bean"属性指定转换的方式采用JavaBean命名规范,match="com.dwr.TestBean"属性指定要转换的JavaBean名称。

0 0
原创粉丝点击