最近在项目中使用了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>
分享到:
相关推荐
s变换用的高斯窗函数( 高斯窗是指数窗的一种,它也无负的旁瓣,而且没有旁瓣波动,因而不回引起计算谱中假的极大值或极小值,而且高斯窗频率窗函数的主瓣比指数窗的主瓣窄,分辨率比指数窗有所提高。
2021科大讯飞车辆贷违预测大赛冠军源码+全部资料.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
AI图像处理工具包-一键抠图、背景切换、旧照片修复、人像漫画化、视频卡通化(Python+OpenCV+Dlib+TensorFlow).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
基于java+springboot+vue+mysql的远程教育网站设计与实现.docx
毕业设计资料,计算机毕业设计,源码,毕业论文,毕业答辩,答辩PPT,Java毕业设计,php毕业设计,ASP.NET毕业设计,毕业指导,计算机作业,php作业,java作业,ASP.NET作业,编程作业,管理系统,网站,app,毕业设计学习,Java学习,php学习,ASP.NET学习,java课程,php课程,ASP.NET课程,答辩技巧,SQLSERVER数据库,Mysql数据库,jdbc,SSM框架,SpringBoot框架,Html5,小程序
蓝牙串口助手,可以连接HC-05等蓝牙模块,实现单片机设备与手机通讯,安卓手机,蓝牙调试助手,具有按键功能!
TriLib 2 是一个跨平台的运行时 3D 模型导入器
人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。