DWR学习(一)

来源:互联网 发布:淘宝鸭鸭羽绒服真的吗 编辑:程序博客网 时间:2024/05/21 02:50

          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" onclick="updateName()"/>
 <br><div id="showHello"></div>
 <br><div id="showVo"></div>
 <select name="list1"></select>
 <select name="list2"></select>
  </body>
</html>