0

基本的に、プロジェクトの開発中に新しいウィンドウを開くときに問題が発生しました。JavaScript の window.open() は使いたくありません。

私は jsf+spring+hibernate フレームワークを使用しています。ユーザーがシステムにログインすると (Spring Security を使用)、2 つのページが表示されます。1 つは元のタブにあり、もう 1 つはポップアップでなければなりません。新しいブラウザを開く方法を見つけました。ここにあります:

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 に答える