DWR入门教程
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。 一、引入DWR裤架的步骤 (1)添加dwr.jar和commons-logging.jar到WEB-INF/lib目录下 (2)修改web.xml 添加DWRServlet配置信息 (3)在WEB-INF目录下面添加dwr.xml文件 (4)在html或者JSP页面中通过JS代码调用服务器段的java方法 二、下面通过一个demo来熟悉如何在工程里面使用dwr框架 (1)下面是该demo的工程结构
(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"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置DWR --> <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.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> </web-app>(3)添加dwr.xml文件
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <allow> <!--配置js段能够方法的java类--> <create creator="new" javascript="DwrDemo"> <param name="class" value="cn.gov.zjport.dwr.DwrDemo" /> </create> <!--配置服务器段的javabean和前段javascript对象之间的转换--> <convert match="cn.gov.zjport.dwr.Person" converter="bean"></convert> </allow> </dwr>(4)修改index.jsp文件,引入dwr需要的js文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Dwr Demo</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <script type='text/javascript' src='/DwrDemo/dwr/engine.js'></script><!--引入dwr的engine.js文件 核心文件--> <script type='text/javascript' src='/DwrDemo/dwr/util.js'></script><!--dwr提供的工具文件--> <script type='text/javascript' src='/DwrDemo/dwr/interface/DwrDemo.js'></script><!--dwr自动生成的js文件 这三个文件会缓存在前段浏览器里面--> <script type="text/javascript"> function dwrdemo() { //调用服务器段的DwrDemo类的getServerData方法,serverReturn是回调方法 DwrDemo.getServerData(serverReturn); } function serverReturn(data) { dwr.util.setValue("val",data); } function dwrdemo1() { DwrDemo.getPerson(serverReturn1); } function serverReturn1(data) { dwr.util.setValue("val1",data.name+":"+data.age+":"+data.address); } </script> </head> <body> <button name="btn" onclick="dwrdemo()" title="click me">click me</button> 返回值:<input type="text" id="val" name="val"> <button name="btn1" onclick="dwrdemo1()">获得用户</button> 用户信息:<input type="text" id="val1" name="val1"> </body> </html> DwrDemo.js文件:
if (typeof dwr == 'undefined' || dwr.engine == undefined) throw new Error('You must include DWR engine before including this file'); (function() { if (dwr.engine._getObject("DwrDemo") == undefined) { var p; p = {}; p._path = '/DwrDemo/dwr'; /** * @param {function|Object} callback callback function or options object */ p.getServerData = function(callback) { return dwr.engine._execute(p._path,'DwrDemo','getServerData',arguments); }; /** * @param {function|Object} callback callback function or options object */ p.getPerson = function(callback) { return dwr.engine._execute(p._path,'getPerson',arguments); }; dwr.engine._setObject("DwrDemo",p); } })(); (5)编写后台对应的业务类DwrDemo.class
package cn.gov.zjport.dwr; public class DwrDemo { public String getServerData() { return "Message from server"; } public Person getPerson(){ Person person = new Person() ; person.setName("张三") ; person.setAge(32) ; person.setAddress("杭州下城区") ; return person ; } } package cn.gov.zjport.dwr; public class Person { private String name ; private int age ; private String address ; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }(6)运行结果
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |