作用:远程调用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)的使用相关推荐

  1. DWR(Direct Web Remoting)原理和实例

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  2. 【AJAX】DWR入门教程

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  3. dwr框架ajax验证账号,dwr-Ajax开源框架

    dwr全称Direct Web Remoting原理将java代码转化成js对象,实现跨域访问 web.xml<?xml  version="1.0" encoding=&q ...

  4. AJAX实践DWR篇(转载)

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  5. DWR+Spring配置使用

    一.DWR介绍 DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端 ...

  6. 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 ...

  7. 基于Web的IM简介

    Web IM的特性:无需安装客户端,穿透防火墙,与社区的紧密结合 Web IM的应用:社区用户的交流,在线客服,CRM. Web IM实现技术 Web IM的实现技术主要有: 基于插件的技术:如Act ...

  8. java dwr_【Java】dwr的使用方法

    DWR(Direct Web Remoting)是一个Java Ajax的框架,允许开发人员在客户端通过JavaScript代码调用服务器端的java方法,这些方法就像是在客户端一样 DWR框架主要由 ...

  9. TSS翻译:帮我选一个Java Web开发框架吧

    TSS:帮我选一个Java Web开发框架吧 最近 TheServerSide.com 上一篇文章引起了常常的讨论.地址见这里:Chose a web client framework. Cheste ...

最新文章

  1. 【图像分类案例】(1) ResNeXt 交通标志四分类,附Tensorflow完整代码
  2. linux添加到普通用户sudo才干
  3. 6.3 Spring Boot集成mongodb开发
  4. EXCEL VBA 导入图片自适应大小
  5. r语言 图形一览_R语言统计与绘图:ggplot2图形组合布局
  6. MIME类型不可小视
  7. c oracle日志分析,oracle 日志分析
  8. 爱立信携Batelco完成巴林首次5G测试
  9. [渝粤教育] 西南科技大学 铁路交通信号控制 在线考试复习资料
  10. Python 人脸表情识别
  11. HBuilder如何运行到MuMu模拟器教程
  12. 校园网如何更改ip地址
  13. ANT下载和配置 IDEA
  14. ST7735 TFT显示屏 显示问题
  15. OROCOS之KDl库在Linux系统下安装学习记录:01
  16. 工厂如何选择一款合适的工业平板电脑?
  17. python 语音识别培训使用Python和Keras创建简单语音识别引擎
  18. toupper() 函数
  19. adb 前摄像头 调用_android: 调用摄像头拍照
  20. 【转】 http请求包含什么

热门文章

  1. 精确打印程序的运行时间
  2. 信息系统项目管理师---运筹学计算
  3. 关于python中的字符串编码理解
  4. iptables基础概念
  5. [转] GCC 中的编译器堆栈保护技术
  6. Maven仓库管理器
  7. qt 中 使用 opengl 上下文 (context) 相关的注意事项
  8. OracleHelper
  9. Ionic Cordova实现软键盘的监听 以及操作大全
  10. DB First .edmx