最近在项目中使用了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" onclick="gettoday();"/> <input type="button" value="getYesterday" onclick="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 onload="updateClass()"> Class:<select name="classid" id="classid" onchange="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>
分享到:
相关推荐
**AJAX_DWR框架:二级联动与PPT实例代码详解** AJAX (Asynchronous JavaScript and XML) 是一种在不刷新整个网页的情况下,实现页面部分更新的技术。DWR (Direct Web Remoting) 是一个开放源码的Java库,它使得在...
在这个“DWR实现的三级联动链表的例子”中,我们将探讨如何使用DWR创建一个能够动态更新的三级联动列表,这种功能常见于如地区选择、产品分类等场景。 首先,我们需要理解DWR的基本工作原理。DWR通过在浏览器端创建...
3. **Struts2的二级联动**:Struts2框架提供了内置的二级联动支持,但效率相对较低,且不适用于更复杂的多级联动需求。因此,开发者通常会寻找其他解决方案,如DWR,来提高性能和用户体验。 4. **DWR(Direct Web ...
在“dynamic.rar”这个压缩包中,我们可能找到了一个关于使用DWR实现两级联动的例子。两级联动通常指的是在一个下拉列表的选择会影响另一个下拉列表的选项,这种交互常见于省市区选择、产品分类等场景。 DWR的核心...
DWR(Direct Web Remoting)是一种Java库,...通过分析这些文件,可以更深入地理解DWR如何与Oracle数据池协同工作,实现二级联动的效果。这个例子展示了DWR在实际开发中的强大功能,简化了前后端交互,提高了用户体验。
总之,"三级联动数据库应用实例"是一个结合了多种技术的Web开发项目,通过Ajax和DWR实现了前端与后端的实时通信,提供了更优秀的用户体验,同时也展示了如何在实际应用中整合使用JSP、Hibernate、Spring等技术。
通过这个项目,我们可以了解到DWR如何与AJAX结合,实现实时的数据交互,以及如何利用DWR处理二级联动效果。这个例子展示了Java后端与JavaScript前端之间的紧密协作,使用户能够在不刷新页面的情况下获取并显示动态...
在这个三级联动的例子中,DWR可能被用于在用户选择某个级别时,动态加载并显示下一级别的数据。 三级联动通常指的是在三个下拉列表中,用户在一个列表中做出选择后,第二个列表会根据第一个选择自动填充,然后在第...
在这个例子中,DWR的这一特性使得实现三级联动变得简单而高效,无需依赖如Struts或Hibernate这样的大型框架。 在JSP页面中,使用JSTL (`<c:forEach>` 标签) 可以方便地遍历Java集合并将其转化为HTML选项。同时,...