社区
Web 开发
帖子详情
在客户端无请求的情况下服务器怎么给客户端响应???
lankyfeng
2006-12-30 04:43:25
在下新手, 现在有一棘手的问题: j2ee开发, b/s结构, 管理员要给所有在线使用页面的用户发送消息, 以消息框的形式弹出,现在的要求是, 管理员发出消息后, 服务器要向所有客户端显示这个消息, 也就是在客户端没有发出请求的时候, 服务器用这个消息响应客户端, 请问有什么方法或技术来解决??? (其实想过用ajax异步刷新来查询是否有消息, 可是这样的话, 每个客户端都在不停的刷, 所以这样不行)
...全文
261
4
打赏
收藏
在客户端无请求的情况下服务器怎么给客户端响应???
在下新手, 现在有一棘手的问题: j2ee开发, b/s结构, 管理员要给所有在线使用页面的用户发送消息, 以消息框的形式弹出,现在的要求是, 管理员发出消息后, 服务器要向所有客户端显示这个消息, 也就是在客户端没有发出请求的时候, 服务器用这个消息响应客户端, 请问有什么方法或技术来解决??? (其实想过用ajax异步刷新来查询是否有消息, 可是这样的话, 每个客户端都在不停的刷, 所以这样不行)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lankyfeng
2006-12-31
打赏
举报
回复
谢谢楼上的, 可是按你的方法, 还是在不停的刷新xxx.jsp来查看有无消息呀, 现在是要求在不刷新的情况下, 如果有消息, 就显示, 我知道servlet里有种叫推送(push)的技术, 好象可以达到这种效果, 但不知道怎么用, 希望知道的大侠们赐教!
liaohaiying
2006-12-31
打赏
举报
回复
Ajax异步请求,servlet产生随机数据,Html页面无刷新显示。
运行环境:jdk1.5+tomcat 5.5
一、ajaxServlet.java
package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Random;
public class ajaxServlet extends HttpServlet{
private static final String CONTENT_TYPE="text/xml; charset=gb2312";
public void init() throws ServletException{}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType(CONTENT_TYPE);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
PrintWriter out=response.getWriter();
String action=request.getParameter("action");
if(("send").equals(action)){
Random random = new Random();
String AA=Integer.toString(Math.abs(random.nextInt()));
String BB=Integer.toString(Math.abs(random.nextInt()));
String CC=Integer.toString(Math.abs(random.nextInt()));
String DD=Integer.toString(Math.abs(random.nextInt()));
StringBuffer sb=new StringBuffer();
sb.append(AA); sb.append("@@@");
sb.append(BB); sb.append("@@@");
sb.append(CC); sb.append("@@@");
sb.append(DD);
out.write(sb.toString());
out.close();
} }}
二、testajax.html
<html>
<head>
<title>AJAX.html</title>
</head>
<script type="text/javascript">
function getResult(){
var url = "/Tajax/AajaxServlet?action=send";
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
}else if (window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if(req){
req.open("GET",url, true);
req.onreadystatechange = complete;
req.send(null);
}
}
/*分析返回的文本文档*/
function complete(){
if (req.readyState == 4) {
if (req.status == 200) {
// alert(req.responseText);
var strResult = unescape(req.responseText);
var arrResult = strResult.split("@@@");
RemoveRow(); //删除以前的数据.
num1 = arrResult[0]; //字段num1的值
num2 = arrResult[1]; //字段num2的值
num3 = arrResult[2];
num4 = arrResult[3];
row1= tb.insertRow();
cell1 = row1.insertCell();
cell1.innerText = num1;
cell2 = row1.insertCell();
cell2.innerText = num2;
row2= tb.insertRow();
cell3 = row2.insertCell();
cell3.innerText = num3;
cell4 = row2.insertCell();
cell4.innerText = num4;
} else {
alert('There was a problem with the request.');
}
}
}
function RemoveRow(){//保留第一行表头,其余数据均删除.
var iRows = tb.rows.length;
for(var i=0;i< iRows-1;i++){
tb.deleteRow(1);
}
}
function MyShow(){//2秒自动刷新一次,2秒取得一次数据.
timer = window.setInterval("getResult()",2000);
}
</script>
<body onload="MyShow()">
<table width="47%" height="23" border="0" cellpadding="1" cellspacing="0" id="tb">
<tr><td>代码</td>
<td>价格</td>
</tr>
</table>
<form>
<p>输入股票代码:
<input type="text" size="14" name="phone" id="phone"/>
</p>
<p>你交易的数量:</p>
<p><textarea name="order" rows="6" cols="50" id="order"></textarea></p>
<p><input type="submit" value="提交" id="submit" /></p>
</form>
</body>
三、web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>AajaxServlet</servlet-name>
<servlet-class>com.ajaxServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AajaxServlet</servlet-name>
<url-pattern>/AajaxServlet</url-pattern>
</servlet-mapping>
</web-app>
huihui0103
2006-12-31
打赏
举报
回复
学习一下
liaohaiying
2006-12-30
打赏
举报
回复
可以这么做:在你的系统主页上(就是用户打的的页面)放个
<iframe src="xxx.jsp" width="0" height="0" marginwidth="0" marginheight="0" frameborder="0" scrolling="No" noresize="noresize"></iframe>
这个小窗口的长度和宽度都是0就是在页面上是不显示的,那么xxx.jsp的代码就是判断是否有管理员的信息(管理员信息存入数据库)也就是刷新看数据库里是否有新记录,如果有新记录就以弹出小窗口显示信息,比如10秒20秒刷新一次,这样就完成你上述的功能了
不过我们一般不用直接弹出窗口的方式来做,一般我们把iframe 的长和宽设小一点比如100,那么就把这个小窗口放在左下角或右上角,当有新消息时就用鲜艳的字来提醒用户有新消息,当初我还在这个小窗口做了一个小秘书的FLASH(类似WORD里的小秘书)当有新消息就用动画和声音(你有新短消息,请注意查收)来提醒用户。
c++高并发商业级游戏
服务器
干货【
客户端
ue4和unity3d】
1、本课程是一个干货课程,主要讲解如何封装
服务器
底层,使用Tcp/ip长连接,IDE使用vs2019 c++开发以及使用c++11的一些标准,跨平台windows和linux,
服务器
性能高效,单
服务器
压力测试上万无压力,
服务器
框架是经历过...
客户端
偶现没有收到
服务器
响应
问题的排查
当出现
服务器
端收不到
客户端
的
请求
包,或者
客户端
收不到
服务器
端的
响应
包时,第一反应就是是抓包,先确定是否存在丢包的可能。 输入命令:tcpdump -i eth0 src port 9983 -XX抓取我们
服务器
9983端口发出去的包,结果...
客户端
/
服务器
架构
客户端
/
服务器
架构又称C/S(client/server)架构...分析
客户端
的
请求
,执行相应的动作,并返回
响应
消息给
客户端
;
客户端
应用如何和
服务器
应用进行交互? IPC机制;
客户端
应用与
服务器
应用的分布?
客户端
和...
客户端
请求
的方式
客户端
的八种
请求
方式如下: 方式 释义 get 获取资源,
请求
指定页面的信息,并返回实体主体 ... 删除文件,
请求
服务器
删除指定的页面 options 询问支持的方法,允许
客户端
查看
服务器
的性..
网站
服务器
如何处理
客户端
请求
,实际的Web
服务器
处理
客户端
请求
的步骤分析
第一步——接受
客户端
连接接受一个
客户端
连接,或者如果不希望与这个
客户端
建立连接,就将其关闭。第二步——接收
请求
报文从网络中读取一条HTTP
请求
报文解析报文1. 解析
请求
行,查找
请求
方法、指定的资源标识符(URI)...
Web 开发
81,092
社区成员
341,716
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章