• ベストアンサー

JSPから出力されたHTML画面のcloseについて

こんにちは! 現在、サーブレットからJSPを呼び出して 画面表示させているのですが、その際(JSP呼び出しの時)に「A」と いうJSPを最初に呼んでその中で、「B」、「C」というフレームを 表示していてその「C」でスクリプトの「window.close」を 使っているのですが、画面が閉じません。 最初にサーブレットを呼び出すHTMLで「window.open」を しているのですが、原因が分かりません。 この方法でできればそれはそれでよいのですが、 もし、JSPを呼び出して、画面表示後にすぐ閉じるといった 処理をご存知の方いらっしゃいましたら 教えてください。

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • xinman
  • ベストアンサー率30% (25/83)
回答No.1

>現在、サーブレットからJSPを呼び出して >画面表示させているのですが、その際(JSP呼び出しの時)に「A」と >いうJSPを最初に呼んでその中で、「B」、「C」というフレームを >表示していてその「C」でスクリプトの「window.close」を >使っているのですが、画面が閉じません。 >最初にサーブレットを呼び出すHTMLで「window.open」を >しているのですが、原因が分かりません。 「A」で実行するなら「window.close」でよいです。 「B」、「C」で実行するなら「top.close」としましょう。 >もし、JSPを呼び出して、画面表示後にすぐ閉じるといった >処理をご存知の方いらっしゃいましたら >教えてください。 <BODY onload='window.close();'> 若しくは <BODY onload='top.close();'> としましょう。

appipi
質問者

お礼

すばらしいご回答ありがとうございます!!! お蔭様で荒波を乗り越えられそうです。(笑)

関連するQ&A

  • 子画面から親画面をクローズしたい

    子画面から親画面をクローズすると確認メッセージが表示されます。 非表示の方法はありますか? 現在の処理内容:  親画面:   ボタン押下時 onclick="window.opener='main';window.open('URL');return false;"  子画面:   onload時 window.opener.close(); 確認ブラウザ:IE10、Chrome43  ※IE10では表示されるが、Chrome43では表示されない。

  • window.close()?でエラー

    javaScriptのwindow.close()で「プログラムにコマンドを送信している時に、エラーが発生しました」と言うエラーが出てしまいます。 但し、Windowは正常にクローズされています。 親画面から子画面をオープンし、子画面のオープン後に親画面自身をクローズしている処理です。 window.opener = window; window.close(); でクローズしています。 宜しくお願いします。

  • JSP、Servlet、設計について

    今回Webアプリの設計を行っていますが、そこで発生した疑問について質問させて頂きます。 このアプリは、大きく分けてログイン画面とメイン画面の二つがあり、各メイン画面ではフレーム部分と内側の部分が存在し、各メイン画面のフレーム部分のデザインは統一したいと思っています。 また、出来るだけMVCモデルを守り、スプリクトレットはできる限り用いず、カスタムタグは使用せず、JavaとServletが理解できれば全体が把握できるような形にしたいと思っています。 ○疑問1 メイン画面のデザインを統一させるためにどのような流れにするか? ・案1 サーブレット、フレーム部分のjsp、内側のjspのファイル、この3つをメイン画面の各機能分作る。 サーブレットで要求を受け、フレーム部分jspにフォワードし、フレーム部分jspから内側jspをインクルードする。 ・案2 サーブレット、フレーム部分のjsp、フレームからインクルードするファイルを決める分岐用サーブレット、この3つを一つづつ作り、内側のjspファイルを各機能分作る。 サーブレットで要求を受け、フレーム部分jspにフォワードし、フレーム部分jspから分岐用サーブレットをインクルードし、分岐用サーブレットから内側jspをインクルードする。 ・考察 案2では、フレーム部分jspを一つに限定できるのでそちらのほうが良いように思えますが、流れが若干複雑になります。案1ではシンプルですが、フレーム部分jspファイルが複数できてしまいます。 機能によっては、サーブレットとJSPがお互いを呼び出すような事が5回ぐらいネストされると思います。 このようなやり方が普通なのか、判断できません。 ○疑問2 ログイン情報を用いた動的メニューを、メイン画面で共通のフレームに追加したい。 ・案1 ViewHelperパターン?のような形にする 一例 <jsp:useBean id="menu" scope="request" class="MenuBean" /> <%= menu.getMenu() %> サーブレットでMenuBeanにログイン情報を設定し、JSPからメニューのHTMLを構成したStringを返してもらう。 ・案2 Servletにする <jsp:include page="MenuServlet" /> JSPからインクルードされたMenuサーブレットで、ログイン情報を取得してメニューのHTMLを構成し、out.printlnする。 ・考察 案1はサーブレットでMenuを作成しなくてはならず、一つ手間が増える。案2は、コントローラであるはずのServletでout.printlnしなくてはならないので何か違和感がある。(他のサーブレットでは、out.printlnする箇所は全くない) どちらが良いのか、または別の方法があるのか。 Servletで実現できるならViewHelperの用途とは何か? よろしくお願い致します。

  • JSP・サーブレット・HTMLについて・・・

    今、サーブレットとJSPについて勉強しています。 HTMLからサーブレットでリクエストを受け付け、 JSPに転送し表示させたいのですが、フォームからの入力の場合は String carname = request.getParameter("cars"); で入力データを取得するコードを書きますよね? (本ではこう書いてました・・・。) では、HTMLの入力フォームからではなくHTMLのリンク部分を クリックされた時の受付けの場合はどう書けばいいのですか? 勉強を始めたばかりで初心者なので、説明不足の点もあるかも 知れませんが分かりやすくご指導宜しくお願いします…。

    • ベストアンサー
    • Java
  • Fire FoxでWindow Closeを有効にする

    Fire FoxでJavaScript Close Windowが効かない・・・ ということで、以下ScriptをHead内に <script type="text/javascript"> function clsWin(){ window.opener = window; var win = window.open(location.href,"_self"); win.close(); } </script> を記入し、HTML内には <INPUT type="button" value="Close" onclick="close_win()"> と記入したのですが、 やはり反応がありません・・・。 どなたかご存知の方、教えてください!

  • JSPとサーブレット

    書き込み一覧が表示してあるJSPの入力フォームがあり、そこで入力をして「書き込み」ボタンを押すと入力したデータが、DBへ登録するサーブレットへ飛び、入力をした画面上では「書き込みました」のようなHTML画面が表示されるとします。その画面で「TOPへ戻る」ボタンを押すと、今度は検索サーブレットが動き、DBから最新の一覧が引っ張り出され、登録更新後の書き込み一覧JSPが画面上に出るとします。ここで質問なのですが、「書き込み」ボタンを押すと同時に登録サーブレットと検索サーブレットを動かすことは出来ないのでしょうか?理想としては、「書き込みました」のようなHTML画面は使用せず、一気に更新後の一覧を表示させたいのです。 この辺の知識はあんまり無いもので、具体的な記述方法を教えて頂くと嬉しいです。

    • ベストアンサー
    • Java
  • JSPのページ移動

    書き込み一覧が表示してあるJSPの入力フォームがあり、そこで入力をして「書き込み」ボタンを押すと入力したデータが、DBへ登録するサーブレットへ飛び、入力をした画面上では「書き込みました」のようなHTML画面が表示されるとします。その画面で「TOPへ戻る」ボタンを押すと、今度は検索サーブレットが動き、DBから最新の一覧が引っ張り出され、登録更新後の書き込み一覧JSPが画面上に出るとします。ここで質問なのですが、「書き込み」ボタンを押すと同時に登録サーブレットと検索サーブレットを動かすことは出来ないのでしょうか?理想としては、「書き込みました」のようなHTML画面は使用せず、一気に更新後の一覧を表示させたいのです。

  • 遷移後の画面クローズができない

    前提: ・ASP.NET ・Chromeブラウザ、バージョン:43 閉じる処理を画像リンクで行い、 記述は<a href="javascript:window.close()">としています。 初期画面はクローズすることができますが、 別画面へ遷移すると遷移先の画面では上記記述でクローズすることができません。 ※リンクをクリックしても何も動作せず。 ※IEでは正常に動作し、画面クローズできます。 ※画面オープンは、「Response.Redirect("URL");」としています。 解決策があれば教えてください。

  • コントローラの役割はJSPにはやらせないですよね?

    コントローラの役割を、HttpServletだけでなくjspにやらせる構成も 正しい思想の1つなのでしょうか?? 「コントローラ」は、 基本「依頼と、依頼結果をもとにした次の依頼」をする。 という風に役割を捉えていました。 例えば Aに処理依頼をしたあと、 処理が成功したから今度はBに処理依頼をして、 その結果データが 1件以上だったらCに依頼をして、 0件だったら次はDに処理を依頼する。 のような。 そして、それはHttpServletのところにやらせるものなのかと捉えています。 (※間違っているのかもですが。。) しかし、 書こうと思えば、サーブレットを撤廃して、 画面遷移は、x.jsp ⇒ y.jsp ⇒ z.jsp と、サーブレットを介さずにチェーンを作ることも可能だと思います。 (1)そういう仕組もわりと一般的なのでしょうか? (2)jspになんでもやらせすぎると、それぞれのソースが、 ◆A:プレゼンテーション層としての処理なのか?(イテレータでの描画とか) ◆B:ファンクション層の処理なのか?(例えば入力チェック処理など) ◆C:コントローラ層の処理なのか? (各結果を元に、次にどこの処理にどういうデリゲートするのか等処理) がパッと分かりにくく、カオスになりやすいと思っています。 そんな風になるくらいだったら、 コントローラはサーブレットにさせた方が良いと思うのですが、あえて全てJSPにさせるメリットもあったりするのでしょうか? ◆確認 画面遷移は、コントローラの役割だと思っていたのですが、 もしかしたらそこが間違っているのでしょうか? (WEB系の開発かどうかでも違うのかもですが。) .

  • JSPでHTMLの表示が優先されてしまいサーブレット内でのprintlnの出力内容が見れない

    お世話になっております。 サーブレット内でのprintlnの出力内容が見たいのですが JSPでHTMLの表示が優先されてしまい、出力結果が見れません。 ブレークポイントを使ったりしてみたのですが、表示されませんでした。 何か良い方法がありましたら教えてください。 よろしくお願いします。

専門家に質問してみよう