dwr3.0推送框架的入门搭建及解答(最新)
来源:互联网 发布:免费刷q币软件 编辑:程序博客网 时间:2024/05/28 05:19
DWR说白了是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
最近看了慕课网的dwr框架的学习, 然后按照上面讲的写了小demo测试下,但是发现错误出现的不少, 于是又查找其他人写的demo教程,发现他们对这个讲解的也是不太清楚,造成了很大的困惑, 一直找不到原因,然后在慕课网视频下面看到有人写的博客,就去看了下, 博客地址:http://blog.csdn.net/Marksinoberg/article/details/55505423#reply
讲解的确实不错,但是按他讲的那样走, 我的Java写成的代码,还是无法编译成js保存。
先写下创建demo的步骤吧:
1,先看下我的目录:
因为是小demo,就简单的搭建了下, 我是用idea搭建的动态web项目。如果不清楚如何用idea搭建动态web项目的话,可以度娘一下。
2、在web.xml 里配置
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <listener> <listener-class>org.directwebremoting.servlet.DwrListener</listener-class> </listener> <servlet> <display-name>dwrTest</display-name> <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> <!-- 允许远程调用js(这个可有可无)--> <!--<init-param> <param-name>allowScriptTagRemoting</param-name> <param-value>true</param-value> </init-param>--> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping></web-app>
3、在web.xml同级目录下新建dwr.xml并且配置
<?xml version="1.0" encoding= "UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://directwebremoting.org/dwr/dwr30.dtd"><dwr> <allow> <!-- 注意,Javascript的类名无需和下面实现类的类名一致 --> <create creator="new" javascript="dwrTest"> <!-- 具体在server端实现的类 --> <param name="class" value="utils.dushPlush"/> </create> </allow></dwr>
4、这些都写好后,就需要在Java类中写咱们的方法了,这里 我用了上面博主的方法;
package utils;import org.directwebremoting.ScriptBuffer;import org.directwebremoting.ScriptSession;import org.directwebremoting.WebContext;import org.directwebremoting.WebContextFactory;import org.directwebremoting.proxy.dwr.Util;import java.util.Collection;/** * Created by T430 on 2017/6/20. */public class dushPlush { public void Send(String msg){ WebContext webContext = WebContextFactory.get(); @SuppressWarnings("deprecation") Collection<ScriptSession> sessions = webContext.getAllScriptSessions(); // 构建发送所需的JS脚本 ScriptBuffer scriptBuffer = new ScriptBuffer(); // 调用客户端的js脚本函数 scriptBuffer.appendScript("callback("); // 这个msg可以被过滤处理一下,或者做其他的处理操作。这视需求而定。 scriptBuffer.appendData(msg); scriptBuffer.appendScript(")"); // 为所有的用户服务 @SuppressWarnings("deprecation") Util util = new Util(sessions); util.addScript(scriptBuffer); // System.out.println("get Message:" + msg); // return "hello: " + msg; }}
5、在jsp页面写东西
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>cesa</title> <script type='text/javascript' src='dwr/util.js'></script> <script type='text/javascript' src='dwr/engine.js'></script> <script type='text/javascript' src='dwr/interface/dwrTest.js'></script> <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script> <script> $(document).ready(function(){ alert('can get here!'); // 页面加载的时候进行反转的激活 /* dwr.engine.setActiveReverseAjax(true); */ /* dwr.engine.setActiveReverseAjax(true) ;*/ // 点击页面按钮的时候触发的方法 $("#button").click(function(){ // 此类即为根据java文件生成的js文件 var data = document.getElementById("data").value; dwrTest.Send(data); }); }); //////////////////////////////////////用于后台调取的函数 function callback(msg){ //alert('test!'); $("#ul").html($("#ul").html()+"<br />"+msg); } </script></head><body><ul id="ul"></ul><br/><hr><input type="text" id="data" name='data' /> <input type='button' id="button" value="publish"></body></html>
注意:重点来了!!!
上面引用的那个博主里面讲的是js代码引用中如何引用的, 我按照他说的那样:项目名/util.js这样搭了以后,运行tomcat在浏览器上打开后是不成功的,也就是说无法查看到,
这是上面博主的关于引用的说法,但是我又仔细的看了,然后测试这个链接后发现, 去掉项目名才能访问到
打开这个http://localhost:8089/dwr/test/index.html后发现,
通过这个图就能看到, 在引用的时候,不用加项目名。
6:写好以后运行tomcat, 就可以试下自己写的这个demo了。
文末:非常感谢上面提到的博主,她自己研究以后,又给我们写了这样的博客,我们才能一步步的走过错误的坑。
- dwr3.0推送框架的入门搭建及解答(最新)
- DWR3.0框架入门 —— DWR的服务器推送
- (转)DWR3.0框架入门(2) —— DWR的服务器推送
- DWR3.0框架入门(2) —— DWR的服务器推送
- DWR3.0框架入门(2) —— DWR的服务器推送
- DWR3.0框架入门(2) —— DWR的服务器推送
- DWR3.0框架入门(2) —— DWR的服务器推送
- DWR3.0框架入门(2) —— DWR的服务器推送
- DWR3.0框架入门 —— java页面推送
- (转)DWR3.0框架入门(3) —— ScriptSession的维护及优化
- DWR3.0框架入门(3) —— ScriptSession的维护及优化
- DWR3.0框架入门(3) —— ScriptSession的维护及优化
- DWR3.0框架入门(3) —— ScriptSession的维护及优化
- DWR3.0框架入门(3) —— ScriptSession的维护及优化
- DWR3.0框架入门(3) —— ScriptSession的维护及优化
- DWR3.0框架入门(3) —— ScriptSession的维护及优化
- DWR3.0 服务器推送及解惑
- DWR3.0 服务器推送及解惑
- cocos2dx opengl入门系列五-显示多纹理
- 配置torch、nccl环境遇到的问题
- python3.6+pyqt5 IDE: Pycahrm+Qtdesign 快速开发GUI程序学习资源
- 大型JavaScript应用程序架构模式
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- dwr3.0推送框架的入门搭建及解答(最新)
- LeetCode 61. Rotate List
- epoll LT/ET 深入剖析
- 获取.properties 配置中的属性名
- css笔记
- 这可能是最好的RxJava 2.x 入门教程(二)
- android 调试常用命令
- android 添加帐户具体步骤
- fastjson反序列化ZonedDateTime格式的时间