首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

DWR学习札记

2012-10-06 
DWR学习笔记今天学习DWR,写了第一个入门小程序,但碰到的问题倒是花了我不少时间,主要是dwr中js导入问题,报

DWR学习笔记

今天学习DWR,写了第一个入门小程序,但碰到的问题倒是花了我不少时间,

主要是dwr中js导入问题,报错为 "dwr.util"为空或不是对象,

这是IE下报的错,在FireFox中直接访问js就报错,

所以确定肯定是js导入的问题。

?

一:DWR简介
1.DWR是一个可以允许你去创建AJAX WEB站点的JAVA开源库。
??? 它可以让你在浏览器中的Javascript代码调用Web服务器上的Java代码,就像Java代码在浏览器中一样。

2.DWR包含2个主要部分:
???? I.一个运行在服务器端的Java Servlet,它处理请求并且向浏览器发回响应。
??? II.运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页。
??
? 3.DWR工作原理是通过动态把Java类生成为Javascript。
??? 它的代码就像Ajax魔法一样,你感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。
??? 这种从Java到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,
??? 而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。
???
? 4.Java从根本上讲是同步机制,然而AJAX却是异步的。
??? 所以你调用远程方法时,当数据已经从网络上返回的时候,你要提供有反调(callback)功能的DWR(JS函数)。


二.DWR的使用步骤:一共有五步:
?????????|-导入dwr.jar
?????????|-配置web.xml
?????????|-配置dwr.xml
?????????|-编写java类
?????????|-编写JSP页面

?

?

下面分步骤介绍:
?1、导入dwr.jar

??? 将dwr.jar、commons-logging.jar两个jar包拷贝到项目的lib目录(dwr.jar会要求一个辅助类库

??? commons-logging.jar来支持日志输出)
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></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>

?

?

3、配置dwr.xml:?

???? 注:dwr.xml与web.xml放在同一目录下

?????????? javascript属性是浏览器中调用该类的变量名??

?

<!DOCTYPE dwr PUBLIC    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"    "http://getahead.org/dwr/dwr20.dtd"><dwr>  <allow>    <create creator="new" javascript="service">      <param name="class" value="demo.Service"/>    </create>  </allow></dwr>

?

?

4、编写java类

?? Service.java:

package demo;public class Service {public String sayHello(String name){//可以是访问数据库的复杂代码System.out.println("---------");return "Hello, "+name;}}

?

?

5、别写jsp页面

??注:js的导入路径

?????? <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/service.js'> </script>?? //自己写的

?

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'first_dwr.jsp' starting page</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/service.js'> </script><script type="text/javascript">function update(){var name = dwr.util.getValue("demoName");service.sayHello(name,function(data) {dwr.util.setValue("demoReply", data);});}</script></head><body><p>Name:<input type="text" id="demoName" /><input value="Send" type="button" onclick="javascript:update()" /><br/>Reply:<span id="demoReply"></span></p></body></html>

?

?

附:把我写的第一个dwr程序上传,供大家参考...

热点排行