Java 与特定浏览器通信
我已经用JSP和servlet创建了一个网站 用户可以登录,他们都可以使用Java 与特定浏览器通信,java,jsp,servlets,web,Java,Jsp,Servlets,Web,我已经用JSP和servlet创建了一个网站 用户可以登录,他们都可以使用userid获得会话属性 我创建了一个带有文本框和按钮的页面,在这里我可以填写用户ID 单击按钮后,我想在特定用户的浏览器上打开一个弹出窗口(url),其中会话用户ID等于文本框中填写的用户ID。弹出窗口应立即出现,无需页面请求即可显示 我应该用什么样的东西 我在谷歌上搜索过,但找不到任何有用的东西。当你需要弹出窗口立即出现,并且你不能等待页面请求时,你需要某种从服务器到客户端的通信渠道,允许推送消息 Javascript
userid
获得会话属性
我创建了一个带有文本框和按钮的页面,在这里我可以填写用户ID
单击按钮后,我想在特定用户的浏览器
上打开一个弹出窗口(url),其中会话用户ID
等于文本框中填写的用户ID
。弹出窗口应立即出现,无需页面请求即可显示
我应该用什么样的东西
我在谷歌上搜索过,但找不到任何有用的东西。当你需要弹出窗口立即出现,并且你不能等待页面请求时,你需要某种从服务器到客户端的通信渠道,允许推送消息 Javascript是一个很好的工具。WebSocket是浏览器和服务器之间的双向连接,在页面打开时打开,双方可以随时使用它发送数据
在每个页面上,您都需要创建一个websocket并将其连接到一个Web服务器。当客户机打开页面时,servlet可以随时向客户机发送消息。然后,您可以用Javascript处理该消息以实现实时聊天应用程序。编写聊天客户端可能非常棘手,因为当另一个用户发送消息时,您必须将数据从服务器发送到客户端。WebSockets允许您这样做,但这是一项非常新的技术,不适用于低于10的IE版本。Chrome、Firefox和Safari都支持它 允许您使用javascript与服务器通信而不需要刷新浏览器页面的一组技术称为AJAX 像DWR这样的库使得在Javascript和Java之间执行AJAX非常容易。它还有一个称为反向AJAX的特性,允许您编写在客户端上执行javascript代码的Java代码 使用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);
}
在下一个页面请求中显示弹出窗口就足够了,还是希望立即显示?@Philipp立即,这是一个聊天弹出窗口。是否可能只向一个浏览器(使用特定会话用户ID)发送数据,而不是在所有浏览器都连接时向所有浏览器发送数据?@y451n是。servlet只需要跟踪所有会话的用户ID。试试这个!谢谢。它不会显示警报,但会话存在。明白了!非常感谢你。