dwr反转ajax功能,dwr实现Reverse Ajax推送技术的三种方式

2023-11-17

DWR2.x的推技术也叫DWR Reverse Ajax(逆向Ajax)主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。在DWR所开的线程中使用Reverse Ajax时,经过WebContextFactory.get()获取WebContext对象,进而获取脚本Session。

在DWR以外使用Reverse Ajax时,就要用到ServerContext,在Spring环境中要获得ServerContext,就须要用到Spring的ServletContextAware接口。javascript

Reverseeverse Ajax的实现有3种方式:

DWR的逆向Ajax两种模式:主动模式和被动模式,其中主动模式包括polling和comet两种,被动模式只有piggyback这一种。html

1)piggyback方式java

这是默认的方式。若是后台有什么内容须要推送到前台,是要等到那个页面进行下一次ajax请求的时候,将须要推送的内容附加在该次请求以后,传回到页面。只有等到下次请求页面主动发起了,中间的变化内容才传递回页面。web

2)comet方式ajax

当服务端创建和浏览器的链接,将页面内容发送到浏览器以后,对应的链接并不关闭,只是暂时挂起。若是后面有什么新的内容须要推送到客户端的时候直接经过前面挂起的链接再次传送数据。服务器所能提供的链接数目是必定的,在大量的挂起的链接没有关闭的状况下,可能形成新的链接请求不能接入,从而影响到服务质量。浏览器

3)polling方式服务器

由浏览器定时向服务端发送ajax请求,询问后台是否有什么内容须要推送,有的话就会由服务端返回推送内容。这种方式和咱们直接在页面经过定时器发送ajax请求,而后查询后台是否有变化内容的实现是相似的。只不过用了dwr以后这部分工做由框架帮咱们完成了。session

使用DWR的推技术的步骤架构

1)在web.xml文件中增长如下配置信息app

dwr-invoker

uk.ltd.getahead.dwr.DWRServlet

debug

true

pollAndCometEnabled

true

1

dwr-invoker

/dwr/*

2)dwr.xml配置:

3)java bean:

public class Message {

private long id = System.currentTimeMillis();

private String text;

public Message(){

}

public Message(String newText){

text = newText;

}

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

}

4)dwrHelper类:

public class DWRHelper {

private static LinkedList messages = new LinkedList();

private static ReentrantLock lock = new ReentrantLock(); //JDK5锁

public void addMessage(String text){

try{

lock.lock();

if(text!=null && text.trim().length()>0){

messages.addFirst(new Message(text));

if(messages.size()>10){

messages.removeLast();

}

}

}catch(Exception ex){

ex.printStackTrace();

}finally{

lock.unlock();

}

//得到DWR上下文

WebContext webContext = WebContextFactory.get();

//获取当前页面URL,好比/ext3/test_tag.jsp

String currentPage = webContext.getCurrentPage();

//当前脚本sessin

ScriptSession scriptSession = webContext.getScriptSession();

//设置页面控件的值

Util util = new Util(scriptSession);

util.setValue("text", ""); //这里是清空页面输入框的值

//设置脚本sessin的属性值

scriptSession.setAttribute("uid", "cjm");

//获取脚本session的属性值

for(Iterator it=scriptSession.getAttributeNames();it.hasNext();){

String attrName = (String)it.next();

System.out.println(attrName + "=" + scriptSession.getAttribute(attrName));

}

//获取全部浏览当前页面的脚本session

Collection sessions = webContext.getScriptSessionsByPage(currentPage);

Util utilAll = new Util(sessions);

//执行客户端脚本

ScriptBuffer script = new ScriptBuffer();

script.appendScript("clientFunction(")

.appendData(scriptSession.getAttribute("uid"))

.appendScript(");");

for(ScriptSession session: sessions){

session.addScript(script);

}

//更新这些脚本session的一些元素

utilAll.removeAllOptions("messages");

utilAll.addOptions("messages", messages, "id", "text");

}

}

5)jsp:

输入信息:

function sendMessage() {

DWRHelper.addMessage(dwr.util.getValue("text"));

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dwr反转ajax功能,dwr实现Reverse Ajax推送技术的三种方式 的相关文章

  • 矩阵 矩阵的基本运算规则 行列式 逆矩阵

    矩阵 本质 矩阵是个数表 从线性变换的视角看 矩阵是记录线性变换这一过程的描述信息 记为 A m n A m times n Am n 或 A a i j A a ij A aij 或 A a i j m n A a ij m times
  • RSA加密长度限制问题解决 BadPaddingException

    Exception in thread main javax crypto BadPaddingException Decryption error at sun security rsa RSAPadding unpadV15 RSAPa
  • python爬取数据存入excel_将爬取的数据保存到Excel表格

    第一步 导入模块 import xlwt 导入写入excel需要的包 第二步 定义函数 将爬取好的数据保存到excel文件中 下面以保存python的关键词为例 介绍详细流程 def write to excel filename lst
  • 蓝牙-基础篇-蓝牙简介

    文章目录 蓝牙特点 蓝牙功能 蓝牙的两种技术 蓝牙特点 低功耗 短距离 跨设备 蓝牙功能 跨设备传输流式音频 跨设备传输数据 广播信息 蓝牙的两种技术 传统蓝牙技术 蓝牙版本2 0 2 1 即Basic Rate Enhanced Data
  • 【小沐学C#】C#逆向反编译工具:JetBrains dotPeek

    论道篇 一天 戈戈来到江边静坐凝思 一手放着风筝 一手钓着鱼 微风徐徐 水面粼粼 柳枝招摇 戈戈 论语 读了许多天可有心得 狄狄 错误要么是 过了 要么是 不及 重要的就是把握住度 戈戈 程朱理学常说格物致知 那些红绿线平时可格出了些什么
  • C语言程序设计 程序设计与C语言

    1 计算机与程序 程序设计语言 机器语言又称低级语言 意思是贴近计算机硬件的语言 是一个型号机器语言的指令的集合 是紧密依赖于计算机的硬件 高级语言用于程序设计 编译系统的软件事先把高级语言编写的程序翻译成机器语言程序 2 C语言的出现和发
  • three.js 内置的几何体Geometry

    案例效果 所有案例效果地址 前言 前面我们了解了 一个three js三大基础renderer camera scene和响应式three js 现在我们来学习一下three js内置的geometry three js提供了很多的几何体给
  • 【PTA】二维数组转置

    写一个程序 使给定的一个二维数组 n n 转置 即行列互换 输入格式 输入n表示n行n列 再输入一个nxn的矩阵的整数 输出格式 转置的结果 输入样例 3 1 2 3 4 5 6 7 8 9 输出样例 1 4 7 2 5 8 3 6 9
  • 1007 素数对猜想

    让我们定义dn为 dn pn 1 pn 其中p是第i个素数 显然有d1 1 且对于n gt 1有dn 是偶数 素数对猜想 认为 存在无穷多对相邻且差为2的素数 现给定任意正整数N lt 10 5 请计算不超过N的满足猜想的素数对的个数 输入
  • 嵌入式的七种接口

    我们将简要介绍七个串行接口 SIO UART SSP SPI I2C CAN USB和EtherMAC 虽然每个接口都有几个不同的操作模式 但我们只介绍一个典型的模式 因此 本文的解释不适用于其它操作模式 摘自东芝 SIO 串行输入输出 最
  • Nginx使用多个.conf文件配置虚拟主机server

    使用 Nginx 配置多个虚拟机 server 服务 通常做法可以直接在 nginx conf 文件中添加即可 如下事例 nginx conf worker processes 1 events worker connections 102
  • Eva 剧情解析

    Eva 剧情解析 来源 https zhuanlan zhihu com p 20864898 0 写在前面的话 相信和我年龄差不多的小伙伴们对 新世纪福音战士 Neon Genesis Evangelion 以下简称 EVA 一定不陌生
  • 动画中英文对照表(09.24)

    ID 英语名 中文名 作者 日语名1 hack Legend of Twilight s Bracelet hack 黄昏的腕轮传说 2 hack Liminality in case of AIHARA Yuki hack OVA版 3
  • 【分类模型评价】宏平均(macro avg)、微平均(micro avg)和加权平均(weighted avg)

    当我们使用 sklearn metric classification report 工具对模型的测试结果进行评价时 会输出如下结果 对于 精准率 precision 召回率 recall f1 score 他们的计算方法很多地方都有介绍
  • Scratch中的坐标系

    Scratch中的坐标系即普通的平面坐标系 其中水平方向为x轴 竖直方向为y轴 x轴与y轴交点为 0 0 点 x轴正方向为水平向右 y轴正方向为竖直向上 舞台默认大小为宽480 高360 其中x轴范围是 240 240 y轴范围是 180
  • 该产品与此版 VMware Workstation 不兼容,因此无法使用

    目录 VMware虚拟机开机报错 解决错误 VMware虚拟机开机报错 配置文件 D Users tyn Documents Virtual Machines Ubuntu16 的克隆 Ubuntu16 的克隆 vmx 是由 VMware
  • intellij idea开发环境下使用jetty跑项目修改js、jsp文件提示Cannot Save Files 问题

    问题描述如题 试了好久终于找到解决办法 记录下来与大家分享 1 首先进入你的maven仓库找到jetty的位置 我的位置在 C Users ccpit m2 repository org mortbay 供大家参考 2 进入jetty目录
  • DrawerLayout+ToolBar

    ToolBar自定义图标 关联DrawerLayout http blog csdn net static zh article details 52621240 Android侧滑菜单DrawerLayout的使用 http blog c

随机推荐

  • (休息几天)读曼昆之微观经济学——供给需求和政府政策

    1价格上限的短期效应和长期效应 价格上限的一个常见例子是租金管制 在很多城市 当地政府部门规定了房东对租房者索要的最高价格上限 该政策的目的是帮助穷人能租得起房子 经济学家通常痛批租金管制政策 认为它是一种非常缺乏效率的帮助穷人提高他们生活
  • QT信号与槽机制解析

    信号 Signal 与槽 Slot 是Qt编程的基础 有了信号与槽的编程机制 在Qt中处理界面各个组件的交互操作时变得更加直观和简单 GUI程序设计的主要内容就是对界面上各组件的信号的响应 只需要知道什么情况下发射哪些信号 合理地去响应和处
  • 持续增加时间价值30条

    今天分享阅读 时间价值 第一章时的笔记 持续增加时间价值30条 1 当你认为时间在帮助自己的时候 就觉得他是自己的朋友 当你有了要做的事情 当你在确定的方向上往前走 那么时间是在累积我们的成果 就是在帮我们的忙 2 在大的时间面前不要做太小
  • [深入研究4G/5G/6G专题-45]: 5G Link Adaption链路自适应-1-总体架构

    目录 第1章 链路自适应技术概述 1 1 概述 1 2 链路自适应技术的类型 1 3 基本概念
  • 电信行业BOSS系统

    BOSS系统 是Business Operation Support System的简称 即业务运营支撑系统 通常所说的BOSS系统分为四个部分 计费及结算系统 营业与账务系统 客户服务系统和决策支持系统 BOSS系统从业务层面来看就是一个
  • 什么是 JSONP?

    前言 首先我们得先了解JSONP是怎么产生的 最开始跨域请求数据没有现在方便 Ajax直接请求普通文件存在跨域无权限访问的问题 然后聪明的程序员想出了一套非官方的解决办法 程序员发现凡是带有 src 这个属性的标签都拥有跨域的能力 比如 l
  • 自媒体创作审核不通过怎么办?教你一个小技巧,提高效率

    自媒体人是不是会遇到平台审核内容不通过的时候 遇到这个问题你是怎么解决的呢 是不是修改内容提交还是不通过 今天 教你一个小技巧 快速解决内容审核不通过的问题 提高发稿效率 很多自媒体新手不知道稿件还能不能进行质量检测 所以 有时候写的自媒体
  • [深入研究4G/5G/6G专题-24]: 5G NR开机流程4.2 - 随机接入应答消息MSG2的调度过程与上行同步、时间提前量TA通过PDSCH信道下发

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 前置条件 第1章 随机接入知识准备
  • UNIAPP中文字上下左右居中

    效果 index vue
  • Flutter drawer侧滑栏实现

    侧滑栏对于大部分App来说都是经常用到的 接下来我们来一步步的实现flutter的侧滑栏效果 这里需要使用flutter提供的 Drawer和DrawerHeader控件 DrawerHeader通常用作侧滑栏的头部控件 比如用户头像等 D
  • Vulnhub之Me-and-My-Girlfriend

    Vulnhub是一个很好的靶机平台 想看官网点这里 今天学习Me and My Girlfriend 点击这里下载哦 这个比较简单 入门学习 VMware和VirtualBox都可以导入 成功后如图 这里修改连接为NAT模式 然后就开始玩耍
  • Mybatis使用datetimepicker日期和时间插件查询时间范围

    使用说明 collectStartDate和setStartDate类型为Date 对应的创建时间在mysql中为varchar类型 一 下载和引入datetimepicker样式和js 二 页面代码 li li
  • ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 已解决

    今天用Navicat Premium 连接 Oracle时报错了 报错信息 ORA 12514 TNS listener does not currently know of service requested in connect des
  • linux压缩文件夹命令 tar_每天一个Linux系统命令|tar

    名称 tar命令是Linux系统下最常用的打包命令 它不但可以对文件或者文件夹打包 还可以打包的时候同时压缩文件 用法描述 tar 选项 目标文件 源文件 压缩 tar 选项 压缩文件 解压 选项描述 如下是该命令的一些选项 按照使用频率进
  • 从零开始开发自己的类keras深度学习框架7:简易版word2vec

    认真学习 佛系更博 前面几章基本介绍了全连接神经网络和卷积神经网络的原理已经开发过程 本章开始将写一些自然语言处理相关的知识 当然 自然处理领域的知识点比图像处理的要复杂 抽象 可能要花更多时间来研究 首先 我们来了解一下word2vec
  • 基于协同过滤推荐+余弦相似度算法实现新闻推荐系统

    针对海量的新闻资讯数据 如何快速的根据用户的检索需要 完成符合用户阅读需求的新闻资讯推荐 本篇文章主要采用余弦相似度及基于用户协同过滤算法实现新闻推荐 通过余弦相似度算法完成针对不同新闻数据之间的相似性计算 实现分类标签 通过协同过滤算法发
  • CLIP视觉编码器

    VisionTransformer conv1 Conv2d 3 768 kernel size 16 16 stride 16 16 bias False ln pre LayerNorm 768 eps 1e 05 elementwis
  • 使用docker在基础镜像上集成tomcat

    当我们对基础镜像版本和tomcat版本有要求时 可以尝试自己集成所需的镜像 不必每次都去拉取其他人提供的镜像 然后在此基础镜像上部署自己的应用 目标版本 基础镜像版本 ubuntu 16 04 JDK版本 jdk1 8 0 191 tomc
  • gitlab-建代码仓库

    一 生成 添加SSH公钥 你可以按如下命令来生成 sshkey ssh keygen t ed25519 C xxxxx xxxxx com 这里的 xxxxx xxxxx com 只是生成的 sshkey 的名称 并不约束或要求具体命名为
  • dwr反转ajax功能,dwr实现Reverse Ajax推送技术的三种方式

    DWR2 x的推技术也叫DWR Reverse Ajax 逆向Ajax 主要是在BS架构中 从服务器端向多个浏览器主动推数据的一种技术 在DWR所开的线程中使用Reverse Ajax时 经过WebContextFactory get 获取