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>