0

基本上,我在开发项目时打开新窗口时遇到了问题。我不想使用 JavaScript 的 window.open()。

我正在使用 jsf+spring+hibernate 框架。当用户登录系统(使用spring security)时,会显示两个页面,一个在原始选项卡上,另一个必须是弹出窗口。我找到了一种打开新浏览器的方法。这里是:

public class LaunchBlackBoard {
public static void runBrowser(String webSite) {
    try {
        Desktop desktop = Desktop.getDesktop();
        if (Desktop.isDesktopSupported()
                && desktop.isSupported(Desktop.Action.BROWSE)) {
            URI uri = new URI(webSite);
            desktop.browse(uri);
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    } catch (URISyntaxException ex) {
        ex.printStackTrace();
    }
}

这是问题所在。此类用于打开默认浏览器,但不用于打开当前运行的浏览器。如果用户使用非默认浏览器登录,则默认浏览器将打开。如果是这种情况,由于会话问题,新选项卡将由于缺少会话而无法通过身份验证。

现在,我想找到一种方法,既可以在同一个浏览器中打开一个新选项卡,也可以将会话对象从一个浏览器传递到另一个浏览器。有什么好主意吗?多谢。

4

1 回答 1

1

没有直接的方法可以在同一浏览器中打开新选项卡。我们可以通过 Httprequest 找到当前浏览器。

String userAgent = request.getHeader("user-agent");
if (userAgent.indexOf("MSIE") > -1) {
  out.println("Your browser is Microsoft Internet Explorer<br/>");
}

http://www.codemiles.com/servlets-jsp/how-can-we-get-browser-information-in-jsp-t1286.html

基于此选择,我们可以将新浏览器作为新进程启动

从 Java 程序打开浏览器窗口

于 2012-08-23T10:11:19.197 回答