`
weiwei5910
  • 浏览: 27551 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类

javaWeb与Jquery ajax长轮询简单实现

 
阅读更多

javaWeb项目中需要一个实时提醒的功能,也就是某人做了某一操作,可以立即提醒到当前在线的用户

最开始想在用户做了操作后,储存一个状态到数据库中然后用每隔几秒用ajax去请求后台查询数据库来确定是否显示提醒窗口

提醒窗口使用jquery easyui 的messager 在右下角弹出如下图


后查得可通过AJAX长轮询的方法来解决频繁对后台的请求,进一步减小压力

在实现过程发现AJAX的多次请求会出现多线程并发的问题又使用线程同步来解决该问题


个人对ajax长轮询的一点愚见

ajax请示后台时,后台程序并没有立即返回信息而是挂起,当符合条件时才会返回信息


文笔不好,只能白话出来,如有不对的地方还请各位指正,一起探讨学习!

现贴出部分代码


js ajax实现部分

function getRtmMsg(show){
	    $.ajax({
		   type:"POST",
		   url:"rtmAction!getMsg.action",
		   data:"show="+show,
		   success: function(msg){
		     if(msg!=null){
		     	bottomRight();
		     	getRtmMsg("0");
		     }
		   }
		});
    }

使用 jquery easyui的messager弹出提示窗口代码

function bottomRight(){  
	    $.messager.show({  
	        title:'提醒',  
	        msg:'下载考生',  
	        showType:'show'
	    }); 
    }


后台Action

/**
 * 实时消息Action
 * @author wangwei
 * May 23, 2013
 */
public class RtmAction  extends ActionSupport{
	
	HttpServletResponse response = ServletActionContext.getResponse();
	HttpServletRequest request = ServletActionContext.getRequest();
	
	private static final ThreadLocal threadLocal = new ThreadLocal();
	private static Object lock = new Object();
	public void getMsg(){
		String show = request.getParameter("show");
		if("0".equals(show)){
			RtmTemplate.cjzxShow = false;
		}
		try {
			//多线程同步解决并发问题
			synchronized(lock){
				while(!RtmTemplate.cjzxShow){
					System.out.println("检测中。。。。");
					Thread.sleep(5000);
				}
			}
			response.getWriter().println("1");
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
}






分享到:
评论

相关推荐

    使用jQuery封装的ajax实现登陆时用户名已存在的提示,注意没有连接数据库去做判断,重点只是实现无刷新的数据交换

    在本文中,我们将深入探讨如何使用jQuery的AJAX功能实现一个简单的登录系统,该系统能够实时检查用户名是否存在,而无需用户点击提交按钮或刷新整个页面。这种方法极大地提升了用户体验,因为用户可以即时得到反馈,...

    基于javaweb和ajax的省市联动实现

    在JavaWeb中,通常使用JavaScript库如jQuery或者原生的XMLHttpRequest对象来实现Ajax请求。 1. **Ajax工作原理**: - 用户触发事件,例如在省份下拉框中选择某个省份。 - JavaScript监听到该事件,通过Ajax向...

    基于javaweb 的 AJAX最全面的实例源码

    9. **JQuery与AJAX**:许多实例可能使用了JQuery库,JQuery简化了AJAX的使用,提供了$.ajax()、$.get()、$.post()等便捷方法。 10. **AJAX与Spring MVC**:在JavaWeb环境中,AJAX常与MVC框架如Spring MVC结合,用于...

    Ajax JavaWeb JS 三级联动

    通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。核心组成部分包括JavaScript、XMLHttpRequest对象(现在更多使用Fetch API)和DOM操作。Ajax的优势在于它可以提供更好的用户体验,减少网络传输,...

    基于javaweb+jquery+mysql的仿猫眼订票系统

    【标题】"基于javaweb+jquery+mysql的仿猫眼订票系统"是一个实际的项目开发案例,它结合了多种技术来实现一个类似于猫眼电影的在线订票功能。这个系统利用JavaWeb作为后端开发平台,jQuery作为前端交互库,而MySQL则...

    javaWeb登录界面Jquery请求+图片轮播

    在本项目中,我们主要探讨的是如何在JavaWeb应用中实现一个包含登录功能的前端界面,并结合Jquery进行Ajax请求,以及实现图片轮播效果。同时,后端使用Java进行用户验证,前端则通过div标签动态生成HTML内容,提供...

    基于Javaweb中用Ajax做的增删改查

    3. **jQuery与Ajax**: 虽然原生JavaScript可以实现Ajax,但为了简化代码,通常会使用jQuery库,它提供了更简单的API来处理Ajax请求。例如,`$.ajax()`, `$.get()`, `$.post()`等方法,使得异步请求更易理解和编写...

    基于JAVAWEB校园订餐系统项目设计与实现.zip

    基于JAVAWEB校园订餐系统项目设计与实现.zip基于JAVAWEB校园订餐系统项目设计与实现.zip基于JAVAWEB校园订餐系统项目设计与实现.zip基于JAVAWEB校园订餐系统项目设计与实现.zip基于JAVAWEB校园订餐系统项目设计与...

    基于Javaweb仓库管理系统项目设计与实现.zip

    基于Javaweb仓库管理系统项目设计与实现.zip基于Javaweb仓库管理系统项目设计与实现.zip基于Javaweb仓库管理系统项目设计与实现.zip基于Javaweb仓库管理系统项目设计与实现.zip基于Javaweb仓库管理系统项目设计与...

    JavaWeb开发之使用jQuery与Ajax实现动态联级菜单效果

    在讨论JavaWeb开发中如何使用jQuery与Ajax实现动态联级菜单效果之前,先对标题中提及的技术和概念做一下阐述。首先,JavaWeb开发指的是使用Java语言进行网络应用和网站的开发。在JavaWeb开发中,经常需要与前端技术...

    jquery+ajax实例(javaWeb开发)

    在JavaWeb开发中,jQuery和Ajax是两种非常重要的技术,它们极大地简化了前端与后端的数据交互过程。jQuery是一个高效、简洁的JavaScript库,而Ajax则是实现页面无刷新更新的关键技术。本实例将深入讲解如何结合...

    基于Javaweb的音乐网站的设计与实现论文(20210806154800).pdf

    基于Javaweb的音乐网站的设计与实现论文(20210806154800).pdf

    13_JavaWeb——AJAX配套资源

    此资源与我的博客13_JavaWeb——AJAX中的两个案例对应,其中Demo5使用AJAX异步处理页面实现对用户输入的实时校验,Demo6使用Axios+JSON完成对品牌列表的展示和添加,取代了先前的JSP。希望有所帮助

    基于JavaWeb的博客网站的设计与实现论文

    基于JavaWeb的博客网站的设计与实现论文

    JavaWeb之Ajax与Jqeury

    ### JavaWeb之Ajax与jQuery #### 一、Ajax概述 **Asynchronous JavaScript and XML (AJAX)** 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它并不是一项全新的技术,而是对现有技术的一种组合...

    jQuery实现轮播图及其原理详解

    本文实例为大家分享了jQuery实现轮播图及其原理的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8" name="viewport" content="width=device-width,...

    JavaWeb通过ajax、json实现省市二级联动

    总的来说,JavaWeb通过AJAX和JSON实现省市二级联动,涉及了前端的JavaScript技术、后端的JavaServlet处理和数据库操作。这一过程体现了前后端分离的思想,提高了页面的交互性和响应速度。理解并掌握这些技术,对于...

    基于javaweb的仓库管理系统设计与实现源码+数据库.zip

    基于javaweb的仓库管理系统设计与实现源码+数据库.zip,含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业使用,该...

    JavaWeb开发jQuery-webcam摄像头拍照插件

    总结,使用jQuery-webcam插件可以在网页上轻松实现摄像头拍照功能,它依赖于jQuery库,提供了一套简单的API来设置摄像头参数、捕获图像和上传照片。开发者可以根据项目需求灵活配置,提升网站或应用的互动性。通过...

    基于JavaWeb的博客网站的设计与实现任务书.pdf

    基于JavaWeb的博客网站的设计与实现任务书.pdf基于JavaWeb的博客网站的设计与实现任务书.pdf基于JavaWeb的博客网站的设计与实现任务书.pdf基于JavaWeb的博客网站的设计与实现任务书.pdf基于JavaWeb的博客网站的设计...

Global site tag (gtag.js) - Google Analytics