基本上,在开发项目时打开新窗口时遇到问题。我不想使用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();
}
}
这是问题所在。此类用于打开默认浏览器,但不能打开当前运行的浏览器。如果用户使用非默认浏览器登录,则将打开默认浏览器。如果是这种情况,由于会话问题,由于缺少会话,新选项卡将不会进行身份验证。
现在,我想找到一种方法,既可以在同一个浏览器中打开一个新选项卡,也可以将会话对象从一个浏览器传递到另一个浏览器。有什么好主意吗?非常感谢。
答案 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
基于此选择,我们可以将新浏览器作为新流程启动