使用java在同一浏览器中打开一个新选项卡

时间:2012-08-23 08:52:27

标签: java session browser

基本上,在开发项目时打开新窗口时遇到问题。我不想使用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();
    }
}

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

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

1 个答案:

答案 0 :(得分:1)

没有直接方法在同一个browesr中打开新选项卡。我们可以使用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

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

Open Browser window from Java program