我在JSP中使用Servlets创建了一个网站。
用户可以登录,他们都会使用userid
获取会话属性。
我创建了一个带有文本框和按钮的页面,我可以在其中填写userid
。
点击按钮后,我想在特定用户的browser
上打开一个弹出窗口(网址),其中session userid
等于文本框中填充的userid
。弹出窗口应立即显示,不需要显示页面请求。
我应该用什么样的东西呢?
我用谷歌搜索,但找不到任何有用的东西。
答案 0 :(得分:1)
编写聊天客户端可能非常棘手,因为当其他用户发送消息时,您必须将数据从服务器发送到客户端。 WebSockets允许您这样做,但它是一项非常新的技术,不适用于10以下的IE版本.Chrome,Firefox和Safari都支持它。
允许您使用javascript与服务器通信而不需要浏览器页面刷新的技术组称为AJAX。
像DWR这样的库可以很容易地在Javascript和Java之间进行AJAX。它还有一个名为Reverse AJAX的功能,允许您编写在客户端上执行javascript代码的Java代码。 http://directwebremoting.org/dwr/documentation/reverse-ajax/index.html
使用DWR,您可以编写此代码以在所有连接的客户端上显示弹出窗口:
Container container = ServerContextFactory.get().getContainer();
ScriptSessionManager manager = container.getBean(ScriptSessionManager.class);
System.out.println("sessions: " + manager.getAllScriptSessions().size());
for (ScriptSession scriptSession : manager.getAllScriptSessions()) {
System.out.println("Sending script to session " + scriptSession);
ScriptBuffer script = new ScriptBuffer("window.alert('hello from reverse ajax server');");
scriptSession.addScript(script);
}
答案 1 :(得分:0)
如果您需要立即显示弹出窗口并且您不能等待页面请求,则需要从服务器到客户端的某种通信通道,这样可以推送消息。
一个很好的工具是Javascript WebSockets。 WebSocket是浏览器和服务器之间的双向连接,在页面打开时打开,双方可以随时使用它来发送数据。
在每个页面上,您需要创建一个websocket并将其连接到WebSocket Servlet。当客户端打开页面时,该servlet能够随时向客户端发送消息。然后,您可以在Javascript中处理该消息,以实现实时聊天应用程序。