dwr例子与二级联动

最近在项目中使用了ajax来实现一个三级下拉菜单,同时在用户登录时也用到了ajax,在看同事写的ajax代码时发现他用到了dwr,所以今天抽空学习了一下dwr,写了两个小例子。

1、点击“getToday”按钮,在文本框中显示今天的日期;点击“getYesterday”按钮,在文本框中显示昨天的日期。
首先下载dwr的jar文件,并把他放到你的WEB-INF/lib文件夹下;
然后在web.xml文件中加入以下代码:
<servlet> <servlet-name>dwr-invoker</servlet-name> <display-name>DWR Servlet</display-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> </servlet> </servlet-mapping> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>


接着,在于web.xml同级目录下新建dwr.xml文件,并加入下面的代码:

<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd"><dwr> <allow> <create creator="new" javascript="Demo"> <param name="class" value="com.dwrtest.java.GetDate"/> </create> </allow></dwr>


新建页面,我这里使用的是freemarker,换做html和jsp也一样效果,代码如下:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src='dwr/interface/Demo.js'></script> <script src='dwr/engine.js'></script> <script language="javascript"> function gettoday() { Demo.getToday(setMytext); } function getYesterday() { Demo.getYesterday(setMytext); } function setMytext(str) { document.getElementById('mytext').value = str; } </script> <title></title> </head> <body> <input type="button" value="getToday" οnclick="gettoday();"/> <input type="button" value="getYesterday" οnclick="getYesterday();"/> <input type="text" value="" name="mytext" id="mytext"/> </body></html>


java文件GetData.java代码如下:



package com.dwrtest.java;import java.text.SimpleDateFormat;import java.util.Date;public class GetDate { public String getToday() { SimpleDateFormat bartDateFormat = new SimpleDateFormat("EEEE-MMMM-dd-yyyy"); Date date = new Date(); return bartDateFormat.format(date); } public String getYesterday() { SimpleDateFormat bartDateFormat = new SimpleDateFormat("EEEE-MMMM-dd-yyyy"); Date date = new Date(); return bartDateFormat.format(new Date(date.getTime() - 86400000)); }}


这样编译以后,启动tomcat就可以看到效果了。

这里的java文件和dwr基本没有什么联系,它的两个方法也不是专门为dwr而写的,显而易见,这两个方法的目的是格式化当天和前一天的时间,并返回他们的String形式。

而在dwr.xml中,我们这样引入了他们,

<create creator="new" javascript="Demo">
<param name="class" value="com.dwrtest.java.GetDate"/>
</create>

这样在javascript中直接使用“Demo”了。

我们可以看到,在页面的js中这样引入了Demo,

<script src='dwr/interface/Demo.js'></script>

在gettoday()和getYesterday()中,调用了Demo.getToday(setMytext),意思是将return的值作为setMytext的参数传到setMytext()中。

2、二级的联动菜单,三级、四级都也可以这样做

页面代码:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src='dwr/interface/ListTest.js'></script> <script src='dwr/engine.js'></script> <script src="dwr/util.js"></script> <script language="javascript"> function updateClass() { ListTest.getClassList(createClass); } function createClass(data) { DWRUtil.removeAllOptions("classid"); DWRUtil.addOptions("classid", data); } function updateUser() { ListTest.getUserList(DWRUtil.getValue("classid"),createUser); } function createUser(data) { DWRUtil.removeAllOptions("userid"); DWRUtil.addOptions("userid", data); } </script> <title></title> </head> <body οnlοad="updateClass()"> Class:<select name="classid" id="classid" οnchange="javascript:updateUser();"></select><br> User:<select name="userid" id="userid"></select> </body></html>


可以看到,引入了<script src="dwr/util.js"></script> 。

java文件ListTest.java的代码:

package com.dwrtest.java;import java.util.LinkedHashMap;import java.util.Map;public class ListTest { public Map getClassList() { Map map = new LinkedHashMap(); map.put("0", "请选择"); map.put("1", "班级一"); map.put("2", "班级二"); map.put("3", "班级三"); return map; } public Map getUserList(String id) { Map map = new LinkedHashMap(); if(id.equals("1")) { map.put("1", "同学一"); map.put("2", "同学二"); map.put("3", "同学三"); } else if(id.equals("2")) { map.put("4", "同学四"); map.put("5", "同学五"); map.put("6", "同学六"); } else if(id.equals("3")) { map.put("7", "同学七"); map.put("8", "同学八"); map.put("9", "同学九"); } else { map.put("", "请选择"); } return map; }}

最后在dwr.xml中添加下面代码:
<create creator="new" javascript="ListTest"> <param name="class" value="com.dwrtest.java.ListTest"/> </create>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值