Ajax也算是久闻了,但总要你自己一遍一遍的Ajax.Request方法,浏览器的不同还得修改不通的方法,让人头痛!目前公司做的系统中包含了DWR,之前也接触过DWR,了解但不熟悉,现在将以前自己写的一个小例子拿出来晒晒。从下一篇文章开始,从头到尾学习下!
1.首先是配置文件,web.xml添加如下代码:(这都是死的)
<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>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2.dwr.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<init>
</init>
<allow>
<convert converter="bean" match="com.demo.DVO">
<param name="include" value="id,name"/>
</convert>
<!-- 将 Java 类Demo 映射为 JavaScript 里面的对象 Demo -->
<create creator="new" javascript="Demo" scope="application">
<param name="class" value="com.demo.Demo"/>
<include method="sayHello"/>
<include method="mytest"/>
<include method="mytest1"/>
<include method="mytest2"/>
</create>
</allow>
</dwr>
3.Demo类:
package com.demo; import java.util.ArrayList; import java.util.List; public class Demo { public String sayHello(String name){ return "Hello-->>"+name; } public List mytest(String id,String name){ System.out.println("mytest:"+id+"||"+name); List list=new ArrayList(); DVO vo1=new DVO(); vo1.setId("1"); vo1.setName("xiaobo"); list.add(vo1); DVO vo2=new DVO(); vo2.setId("2"); vo2.setName("mll"); list.add(vo2); return list; } public DVO mytest1(String id,String name){ System.out.println("mytest1:"+id+"||"+name); DVO vo = new DVO(); vo.setId("3"); vo.setName("test"); return vo; } public void mytest2(DVO vo){ System.out.println("^^^^^^^"+vo.getId()+vo.getName()); } }
4.DVO类:
package com.demo; public class DVO { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public DVO() { } }
5.index.jsp页面:
<%@ 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>dwrTest</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">
<!-- DWR JavaScript 类库 -->
<script type='text/javascript' src='/mydwr/dwr/interface/Demo.js'></script>
<script type='text/javascript' src='/mydwr/dwr/engine.js'></script>
<script type='text/javascript' src='/mydwr/dwr/util.js'></script>
<script type="text/javascript">
function updateName(){
var text=$("text").value;
var id=dwr.util.getValue("id");
var name=dwr.util.getValue("name");
// Demo.sayHello(text,callBack);//回调函数写在外部,下边是写在内部的
Demo.sayHello(text,function (data){dwr.util.setValue("showHello",data,{escapeHtml:true});});
//关于返回list取值,(javabean:DVO.java从data中得到)
Demo.mytest("1","xiaob0",function(data){
for(var i=0;i<data.length;i++){
$(list1).add(new Option(data[i].id,data[i].id));//将list中的值放到jsp的list2中
$(list2).add(new Option(data[i].name,data[i].name));//将list中的值放到jsp的list2中
}
});
}function callBack(data){
dwr.util.setValue("showHello",data,{escapeHtml:false});
}
</script>
</head>
<body>
请输入姓名:
<br>返回值_:<input id="text" type="text" value=""/>
<br>对象__id:<input id="id" type="text" value=""/>
<br>对象name:<input id="name" type="text" value=""/>
<br><input type="button" value="submit" οnclick="updateName()"/>
<br><div id="showHello"></div>
<br><div id="showVo"></div><select name="list1"></select>
<select name="list2"></select>
</body>
</html>