DWR原理及应用

来源:互联网 发布:矩阵行列式的性质 编辑:程序博客网 时间:2024/04/29 14:56

DWR原理

主要实现直接对JAVA类提供方法的使用,减小了前台的请求压力。

前台页面请求一次后台,后台的方法执行一次或者多次对前台需要的内容进行推送。这样 ,前台不必在多次请求相同的一个动作。

在用户配置了要向客户机公开的服务之后,它使用反射来生成JavaScript对象,以便 Web页面能够使用这些对象来访问该服务。然后Web页面只需接合到生成的JavaScript对象,就像它们是直接使用服务一样;DWR无缝地处理所有有关Ajax和请求定位的琐碎细节。

使用到的Jar包

相应的配置

Web.xml :申明dwr的相关配置

Dwr.xml:与Web.xml位于同级目录下用于连接js页面和java类

Js部分:主要有三个外部导入的js

Util.js、engine.js、interface/XX.js(XX为dwr.xml文件中指定的 javascript的值)

相关方法本身可以有回调方法

Java部分:一般被调用的方法设有返回值,也可以由DWR提供的方法直接推送, 不需要返回值

页面推送的实例

实例1、最简单的推送

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>

         <!-- 需加入跨域调用配置信息:如果报错CSRF Security Error -->

      <init-param>

             <param-name>crossDomainSessionSecurity</param-name>

             <param-value>false</param-value>

      </init-param>

      <init-param>

            <param-name>allowScriptTagRemoting</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>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

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="test1">

       <param name="class" value="com.oracle.dwr.Test1"></param>

     </create>

     <!--这里的create 可以链接的也可以是spring里面的bean-->

   </allow>

</dwr>

测试Jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<html>

   <head>

       <title>dwr</title>

     <script type='text/javascript' src='dwr/util.js'></script> 

     <script type='text/javascript' src='dwr/engine.js'></script>

     <script type='text/javascript' src='dwr/interface/test1.js'> </script>

     

      <script type="text/javascript">

      

  

       function show(){

        test1.sayHello(result);

        // alert(typeof result);

        var result=function(data){

            alert(data);

        }

       }

       </script>

     </head>

   <body>

      <input type="button" onclick="show();" value="点我吧"/>

   </body>

</html>

Java类

public class Test1{

   public String sayHello(){

   return "hello dwr";

   }

}

2、单个页面可能由多个用户访问,用dwr推送可以实现无io流和套接字的一个或者多个人的简单会话窗口。

从他人那里学得并受益,修改之后用到了之后的DWR+Quartz的开发当中。

(访问的时候在访问url中加上name参数及其数值即可,不同的dwr版本的包,提供的推送方法不一样,下面用的是dwr3.x的)

链接http://www.blogjava.net/stevenjohn/archive/2012/07/07/382447.html

0 0
原创粉丝点击