こんにちは!

現在、サーブレットからJSPを呼び出して
画面表示させているのですが、その際(JSP呼び出しの時)に「A」と
いうJSPを最初に呼んでその中で、「B」、「C」というフレームを
表示していてその「C」でスクリプトの「window.close」を
使っているのですが、画面が閉じません。

最初にサーブレットを呼び出すHTMLで「window.open」を
しているのですが、原因が分かりません。

この方法でできればそれはそれでよいのですが、
もし、JSPを呼び出して、画面表示後にすぐ閉じるといった
処理をご存知の方いらっしゃいましたら
教えてください。

A 回答 (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();'>
としましょう。
    • good
    • 0
この回答へのお礼

すばらしいご回答ありがとうございます!!!

お蔭様で荒波を乗り越えられそうです。(笑)

お礼日時:2001/03/18 15:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

QJSP+Servletで終了ボタン

JSPで、終了ボタンをクリックしたときに、
ブラウザを閉じる、といった処理は
<INPUT TYPE = "submit" NAME="EXT" VALUE ="終了" onclick ="window.close();">

などでできるとあったのですが、
終了ボタンで、ページ(JSPではなく、
HTML)を移動する場合、onclick=以下に
HTMLのアドレスを書いたらいいのでしょうか?
やってはみたのですが、うまくいきませんでした。
うまくいかないというのは、
そのままServletにリクエストがわたるようで、
表示ページから何も移動しないということです。

また、<a href = "・・・></a>という
リンクのタグもやってみましたが、
ランタイムエラーがでてしまいました。

何か外しているようでしたら、教えていただきたい
のですが。。。。

Aベストアンサー

二つ案を用意しました。両方とも、

button1を押したら、サーブレットにサブミットされ、
button2を押したら、次のURLに移動します。

**案1********************
<form action="/servlet/SimpleServlet">
<input type="submit" name="button1" value="終了">
<input type="button" name="button2" onClick="save();">
</form>

function save(){
document.write("<FORM name=\"SAVE\" method=\"POST\" action=\"/html/nexturl.html\"");
document.write("<INPUT type=\"hidden\" name=\"AAA\\" value=\"aaa\">");
document.write("</FORM >");
document.SAVE.submit();
}
**********************


他にも、
**案2********************
<form name="FORM1">
<input type="button" name="button1" onClick="save(1);">
<input type="button" name="button2" onClick="save(2);">
</form>

function save(n){
if(n==1)document.forms[FORM1].action="/servlet/SimpleServlet";
if(n==2)document.forms[FORM1].action="/html/nexturl.html";
}

**********************

二つ案を用意しました。両方とも、

button1を押したら、サーブレットにサブミットされ、
button2を押したら、次のURLに移動します。

**案1********************
<form action="/servlet/SimpleServlet">
<input type="submit" name="button1" value="終了">
<input type="button" name="button2" onClick="save();">
</form>

function save(){
document.write("<FORM name=\"SAVE\" method=\"POST\" action=\"/html/nexturl.html\"");
document.write("<INPUT type=\"hidden\" name=...続きを読む

Q子→親ウインドウへデータを受け渡し、子ウィンドウを閉じる。

このような処理はできないでしょうか?

子ウィンドウはコード番号の検索用。該当のコードのリンクをクリックすると、そのコード番号を親ウィンドウのテキストボックスへ落とし込む。そのタイミングで、子ウィンドウは閉じる。
子→親ウインドウへのデータの受け渡しと、子ウィンドウのクローズを同時に行うようなイメージです。
よろしくお願いします。

Aベストアンサー

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<th>顧客名称</th>
</tr>
<tr>
<td><a href="javascript:ich('ABC商店')">0001</a></td>
<td>ABC商店</td>
</tr>
<tr>
<td><a href="javascript:ich('DEF商店')">0002</a></td>
<td>DEF商店</td>
</tr>
</table>

もしくはNo.1様の言うようにidを設定して
【親画面】
<input type="text" name="kokyaku_cd" size="10" id="kokyaku_cd">

【子画面 function内】
window.opener.document.getElementById("kokyaku_cd").value=n;

でできると思います

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<t...続きを読む

Qequalsの逆

javaで、文字列の場合は比較演算子の「==」は用いずに

if ((str1.getText()).equals(str2)){
(※…str1,2は文字列)

と書きますよね?
この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?

Aベストアンサー

>if !((str1.getText()).equals(str2)){

あくまで
if(){
}


!(str1.getText()).equals(str2)
が入っているので
if !((str1.getText()).equals(str2)){
じゃなくて
if (!(str1.getText()).equals(str2)){
こう。

QJSPでメッセージボックスを表示したい

urizakaです。
さて、早速質問したいのですが、現在作っているJSPのプログラムで
ボタンを押すとFORMのActionに記述されているサーブレットに移動
してサーブレットを実行するかキャンセルするかという(いわゆるVB
でいうところの)メッセージボックスを表示したいのですが、そのような
方法というのはあるのでしょうか?確か、javaにはメッセージボックス
という概念が無かったような気もするので…
環境は、JBuilder4で、HTMLのソースコードは

<Form Method="POST" Action="×××(ここにサーブレットの
アドレスを入力)">
<Input type="submit" Value="押す">
</Form>

です。
 宜しくお願いします。

Aベストアンサー

「押す」のボタンを押した後に、再確認のダイアログが表示されれば
良いのですか?

<input type="submit" value="押す" onClick="return confirm('本当にする?')">

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QJSPからクラス(サーブレット)を呼び出す方法

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動きました。

【フォルダ構成 (Tomcat 6.0\webappsの直下) 】

javaroad
---------- index.jsp
---------- WEB-INF
-------------------- web.xml
-------------------- classes
---------------------------- HelloServlet.class

【index.jsp】
<%@ page contentType="text/html;charset=Shift_JIS" %>
<jsp:useBean id="GSBean" class="Testaaa.GetSetBean" />
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<form method="post" action="/Hello">
<input type="text" name="name1" maxlength="10" style="ime-mode: disabled">
<jsp:setProperty name="GSBean" property="userID" param="name1" />
<br><br>
<input type="submit" value="submit">
</form>
</body>
</html>

【web.xml】
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>

</web-app>

【HelloServlet.class】
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println(new java.util.Date());
out.println("</BODY>");
out.println("</HTML>");
}

以下試して駄目だったパスの一覧です。
<form method="post" action="Hello">
<form method="post" action="/Hello">
<form method="post" action="../servlet/Hello">
<form method="post" action="HelloServlet">
<form method="post" action="/HelloServlet">
<form method="post" action="../servlet/HelloServlet">
<form method="post" action="WEB-INF\classes/HelloServlet">
<form method="post" action="http://localhost:8080/javaroad/Hello">

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動...続きを読む

Aベストアンサー

<form method="get" action="Hello">

ではないでしょうか。

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

QJavaプログラムからポップアップを表示する方法

現在、Javaプログラムにおいて以下のような
ことを実施したいと考えています。

1。画面上(JSP)からSQLで使用する条件を選び、ボタンをクリック
1.JavaからDBにアクセスし、検索結果件数を取得
2.件数をポップアップで表示し、「はい」もしくは「いいえ」を選択することで、処理を続行させるかさせないかを決定

1及び2については問題なく行えるのですが、3のやり方がよくわかりません。

DBの検索結果が仮に3件だとすると、ポップアップで
「3件が選択されました。処理を続行しますか」というメッセージとともに
「はい」、「いいえ」ボタンを表示させます。

ここで表示するポップアップは、できればJavaScriptで行いたいのですが可能なのでしょうか。
もしJavaScriptでなくても、とにかくポップアップが表示できるようにしたいと考えています。

大変恐縮ですが、よろしくお願いします。

Aベストアンサー

補足の方も読ませて頂きました。

> ここで私の不明点として、1つめが(2)から(3)への遷移になります。
> つまり、Javaプログラム本体からJavaScriptを呼び出すこと。

厳密に言うと、JavaからJavascriptを「呼び出す」ことはできません。
JavaおよびJSPは、ブラウザからのHTTPリクエストに対して
応答としてHTML(含Javascript)を「返す」ことしかできません。
そのHTMLを表示してJavscriptを実行するのは、ブラウザの役目です。

syu1219_aさんがおっしゃる「JavaがJavascriptを呼ぶ」というのは
おそらく、Javaが応答を返して自動的にconfirmのダイアログが出て
「はい」か「いいえ」の確認をユーザに促す、ということなのかと
想像します。

それであれば、Javascriptの「onLoad」イベントが使えます。
onLoadイベントは、ブラウザが読み込み終わると発生しますが、
それを<body>タグにつければ、ページ読み込み完了時に
イベントが発生し、希望のfunctionを呼び出すことができます。
以下のようにすれば、ページ表示と同時に確認を行えます。
----------
<html>

<body onLoad="kakunin()">

</body>
</html>
<script language="Javascript">
<!--

function kakunin() {
  var msg = "検索結果は";
  msg += "<bean:write property="kensakuKekka"/>";
  msg += "です。\n処理を実行しますか?";
  if(confirm(msg) == true) {
    :
  }
  else {
    :
  }
  :
}

//-->
</script>
----------

> そして、2つめが(3)から(4)への遷移になります。
> つまり、JavaScriptで選択された結果をJavaプログラムに返すこと。

ブラウザ側からJavaの方へ情報を伝えるには、
入力された値にしろ、押したボタンにしろ、何にしても
<form>に情報を持たせてsubmitで送信するしかありません。
情報を何らかの形でsubmitに載せることになります。

「確認でどちらを選択したか」というプロパティを新たに設ければ
Java側で受け取ることができます。
<input type="hidden">を使い、submitに載せるといいでしょう。
----------
<html>

<form method="post" action="hogehoge">

<input type="hidden" name="sentaku">

</form>

</html>
<script language="Javascript">
<!--

function kakunin() {
  var f = document.forms[0];
  var msg = "検索結果は";
  msg += "<bean:write property="kensakuKekka"/>";
  msg += "です。\n処理を実行しますか?";
  f.elements["sentaku"].value = confirm(msg);
  f.submit();
}

//-->
</script>
----------

あとは、form.actionを書き換えることによって
ちがうActionを呼ぶということもできるでしょう。

補足の方も読ませて頂きました。

> ここで私の不明点として、1つめが(2)から(3)への遷移になります。
> つまり、Javaプログラム本体からJavaScriptを呼び出すこと。

厳密に言うと、JavaからJavascriptを「呼び出す」ことはできません。
JavaおよびJSPは、ブラウザからのHTTPリクエストに対して
応答としてHTML(含Javascript)を「返す」ことしかできません。
そのHTMLを表示してJavscriptを実行するのは、ブラウザの役目です。

syu1219_aさんがおっしゃる「JavaがJavascriptを呼ぶ」というのは
おそ...続きを読む

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング