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了。

文末:非常感谢上面提到的博主,她自己研究以后,又给我们写了这样的博客,我们才能一步步的走过错误的坑。

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 卡西欧手表电池没电了怎么办 审稿人让引用他的文章怎么办 考二建未从事该行业满两年怎么办 2档换3档离合器怎么办 高铁车票丢了怎么办 事业编制调动原单位不同意怎么办 想去铁路上工作怎么办 房产权50年以后怎么办 在香港手机没电怎么办 学校官网登陆忘记密码怎么办 网上申报学校忘记密码怎么办 专转本想换专业怎么办 发生工伤没有平均公资怎么办? 单招过了不想去怎么办 22岁了还想复读怎么办 父母不让我读大专了怎么办 专升本考试失利怎么办 高考复读一年后失败了怎么办? 医保住院超过30万怎么办 北京医保超过2万怎么办 工伤公司垫付医疗费没法报销怎么办 司法考试照片耳朵露不出来怎么办 新华社毕业证照片用光了怎么办 农村父母投靠落户社保怎么办 退休后投靠父母户口怎么办 要离婚想儿子了怎么办 怀孕期间离婚了孩子户口怎么办 常州武进区怎么办居住证明 跟老公离婚了户口怎么办 离婚了不给户口怎么办 父母不给户口本迁户口怎么办 产能置换的煤矿职工怎么办 如果是单位集体户小孩读书怎么办 异地防疫不给打怎么办? 青岛市办理大龄就业困难补贴怎么办 就业登记证掉了怎么办 就业信息填错了怎么办 小孩入学父母无单位怎么办 和公婆住一起很压抑怎么办 不想和公婆一起住怎么办 在家啃老三年了怎么办