您的位置:首页 > 其它

DWR入门教程

2014-12-08 21:04 239 查看
最近公司要弄一个后台持续推送信息的功能,查了下需要用到DWR,遂研究之。

一个最基本的DWR实例需要两个包:dwr.jar和commons-logging-1.0.4.jar.(不知道怎么下载,需要去官网下载),下面开始步入正题:

1.创建一个JavaWeb项目,并且将上面的两个包拖入到WEB-INF下的lib里面去。

2.修改web.xml。<固定写法,直接复制>

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

<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> <!--此处列为标记1,后面有解释-->
</servlet-mapping>
</web-app>


3.创建一个实体类。

package com.mz.dwr;

public class DwrDemo {

public String getInput(String input){
return "你的输入是"+input;
}

}


4.配置dwr.xml<重点部分,这部分主要配置javascript与java的映射>

在web.xml同级目录下创建新的xml文件,名称叫做dwr.xml,主要配置信息如下:

<allow>
<create creator="..." javascript="..." scope="...">
<param name="..." value="..."/>
<auth method="..." role="..."/>
<exclude method="..."/>
<include method="..."/>
</create>
...
</allow>


其中creator和javascript是必须属性。其余可以省略,主要作用如下表所示:





下来看下我们程序的配置:

<?xml version="1.0" encoding="UTF-8"?>
<dwr>
<allow>
<!--标记2-->
<create creator="new" javascript="Demo">
<param name="class" value="com.mz.dwr.DwrDemo"></param>
</create>

<!-- java 类库 -->
<create creator="new" javascript="MyDate">
<param name="class" value="java.util.Date"></param>
</create>

<!-- convert元素用于数据类型转换,即java类和javascript之间相互转换 -->
<convert converter="exception" match="java.lang.Exception" />
<convert converter="bean" match="java.lang.StackTraceElement" />
</allow>
</dwr>


下面解释一下标记2.。标记2中creator的值只能是下面几个,不能乱起。



而后面javascript中的值代表的是与由这个类被改成的js.<要知道dwr的本质是将java代码经过反射修改为js代码>;在这里你姑且可以认为把类改成成了一个名字为Demo的js文件,Demo.js.

5.新建一个jsp页面。

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
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>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
标记3
-->
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/Demo.js'></script>
<script type="text/javascript">
function getInput(name) {
Demo.getInput(name, dwrHandler);
}

function dwrHandler(data) {
alert(data);
}
</script>

</head>

<body>
<input type="button" onclick="getInput('mazhan')" value="hh">
</body>
</html>


这里主要注意一下标记3,标记下面引入的三个js文件,前两个是自动生成的。必须引入。其中xxx/dwr/xxx.js中的dwr,是和标记1的设置相同的。

引人的第三个js文件,作用是中 xxx/dwr/interface/xxx.js的命名,dwr和上面一样,interface是必须加的,xxx.js的名称是根据标记2中javascript后面接的名字相同。

所以在调用时,直接Demo.函数就是调用java里面的代码,dwrHandler是回调函数。

如此一下,一个简单的dwr程序就写好了。

下一章,讲一下与Spring的整合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: