dwr(Direct Web Remoting)的使用
作用:远程调用java代码
安装:加入包,配置web.xml,配置dwr.xml(WEB-INF下),在页面中引入相关js
web.xml
<listener><listener-class>org.directwebremoting.servlet.DwrListener</listener-class></listener><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>
dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
<dwr><allow><!--<filter class="com.example.dwr.monitor.MonitoringAjaxFilter"/><filter class="org.directwebremoting.filter.ExtraLatencyAjaxFilter"><param name="delay" value="200"/></filter>--><!-- intro - for the test on index.html --><create creator="new"><param name="class" value="org.konghao.dwr.model.MyDwr"/></create> <!-- 对象转换器 --> <convert converter="bean" match="org.konghao.dwr.model.User"/><convert converter="bean" match="org.konghao.dwr.model.Group"/><!-- 显示异常对象 --> <convert match="java.lang.Exception" converter="exception"/><convert converter="bean" match="java.lang.StackTraceElement"/></allow>
</dwr>
jsp中引入相关js
<script type="text/javascript" src="<%=request.getContextPath()%>/dwr/engine.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/dwr/interface/MyDwr.js"></script>
<script type="text/javascript">MyDwr.hello("世界",function(data){alert(data);});
</script>
<script type="text/javascript">MyDwr.load(loadUser);function loadUser(user) {alert(user.id+","+user.username+","+user.group.name);}
</script>
<script type="text/javascript">MyDwr.list(listUser);function listUser(users) {for(var i=0;i<users.length;i++) {alert(users[i].username+","+users[i].group.name);}}
</script>
<script type="text/javascript">var user = {id:1,username:"李四",group:{id:2,name:"网络中心"}};MyDwr.add(user);
</script>
<script type="text/javascript">MyDwr.deleteUser({callback:deleteUser,errorHandler:function(msg,exception) {alert(msg);/*for(var ea in exception) {alert(ea);}alert(exception.stackTrace);*/alert(dwr.util.toDescriptiveString(exception,1));}});function deleteUser(data) {}
</script>
<body><input type="text" id="a"/>+<input type="text" id="b"/><input type="button" value="获取" οnclick="calAdd()"><br/><select id="address"></select><input type="button" value="初始化地址" οnclick="initAddress()"/><input type="text" id="addressName"/><input type="button" value="添加" οnclick="addAddress()"/><table width="600" border="1"><thead><tr><td>ID</td><td>username</td><td>groupName</td></tr></thead><tbody id="user"></tbody></table> <input type="button" value="初始化用户" οnclick="initUser()"/>
</body>
<script type="text/javascript">
function calAdd() {var a = dwr.util.getValue("a");var b = dwr.util.getValue("b");MyDwr.add(parseInt(a),parseInt(b),function(data){alert(data);});
}function addAddress() {var a = dwr.util.getValue("addressName");var data = [{id:a,name:a}];dwr.util.addOptions("address",data,"id","name");
}
function initAddress() {dwr.util.removeAllOptions();var data = [{id:1,name:"北京"},{id:2,name:"天津"},{id:3,name:"上海"}];dwr.util.addOptions("address",data,"id","name");
}function initUser() {MyDwr.list(function(data){dwr.util.addRows("user",data,cellFuncs,{ escapeHtml:false });});
}
var cellFuncs=[function(data){return data.id},function(data){return data.username},function(data){return data.group.name}
];
</script>
<script type="text/javascript">
function upload() {var file = dwr.util.getValue("myfile");alert(file.value);alert(file);MyDwr.upload(file,file.value,function(data){alert(data);});
}
</script>
<body><input type="file" id="myfile"/> <input type="button" value="上传文件" οnclick="upload()"/>
</body>
MyDwr.java
public class MyDwr {public String hello(String world) {System.out.println("hello "+world);return "hello "+world;}public User load() {User u = new User(1,"张三",new Group(1,"财务处"));return u;}public List<User> list() {List<User> users = new ArrayList<User>();users.add(new User(1,"张三",new Group(1,"财务处")));users.add(new User(2,"李四",new Group(2,"科技处")));users.add(new User(3,"王五",new Group(3,"宣传部")));return users;}public void add(User user) {System.out.println(user);}public void deleteUser() {throw new MyException("在删除用户的时候有错");}public int add(int a,int b) {return a+b;}public String upload(InputStream is,String filename) throws IOException {//WebContext可以获取HttpServlet的对象WebContext wc = WebContextFactory.get();HttpServletRequest req = wc.getHttpServletRequest();String realpath = req.getSession().getServletContext().getRealPath("upload");String fn = FilenameUtils.getName(filename);String filepath = realpath+"/"+fn;FileUtils.copyInputStreamToFile(is, new File(filepath));return filepath;}
}
dwr(Direct Web Remoting)的使用相关推荐
- DWR(Direct Web Remoting)原理和实例
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...
- 【AJAX】DWR入门教程
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...
- dwr框架ajax验证账号,dwr-Ajax开源框架
dwr全称Direct Web Remoting原理将java代码转化成js对象,实现跨域访问 web.xml<?xml version="1.0" encoding=&q ...
- AJAX实践DWR篇(转载)
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...
- DWR+Spring配置使用
一.DWR介绍 DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端 ...
- DWR入门教程(http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html)
文章转载自<http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html>,多谢大牛分享! DWR入门教程 DWR(Direct ...
- 基于Web的IM简介
Web IM的特性:无需安装客户端,穿透防火墙,与社区的紧密结合 Web IM的应用:社区用户的交流,在线客服,CRM. Web IM实现技术 Web IM的实现技术主要有: 基于插件的技术:如Act ...
- java dwr_【Java】dwr的使用方法
DWR(Direct Web Remoting)是一个Java Ajax的框架,允许开发人员在客户端通过JavaScript代码调用服务器端的java方法,这些方法就像是在客户端一样 DWR框架主要由 ...
- TSS翻译:帮我选一个Java Web开发框架吧
TSS:帮我选一个Java Web开发框架吧 最近 TheServerSide.com 上一篇文章引起了常常的讨论.地址见这里:Chose a web client framework. Cheste ...
最新文章
- 【图像分类案例】(1) ResNeXt 交通标志四分类,附Tensorflow完整代码
- linux添加到普通用户sudo才干
- 6.3 Spring Boot集成mongodb开发
- EXCEL VBA 导入图片自适应大小
- r语言 图形一览_R语言统计与绘图:ggplot2图形组合布局
- MIME类型不可小视
- c oracle日志分析,oracle 日志分析
- 爱立信携Batelco完成巴林首次5G测试
- [渝粤教育] 西南科技大学 铁路交通信号控制 在线考试复习资料
- Python 人脸表情识别
- HBuilder如何运行到MuMu模拟器教程
- 校园网如何更改ip地址
- ANT下载和配置 IDEA
- ST7735 TFT显示屏 显示问题
- OROCOS之KDl库在Linux系统下安装学习记录:01
- 工厂如何选择一款合适的工业平板电脑?
- python 语音识别培训使用Python和Keras创建简单语音识别引擎
- toupper() 函数
- adb 前摄像头 调用_android: 调用摄像头拍照
- 【转】 http请求包含什么