【無料配信♪】Renta !全タテコミ作品第1話

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

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

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

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

A 回答 (4件)

二つ案を用意しました。

両方とも、

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";
}

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

この回答への補足

kuro_73さんのコードでやってみると
できました!!!

有り難うございます!!
大変感謝しております。

補足日時:2001/08/15 15:51
    • good
    • 0

こういうことでしょ。



<form>
<input type="button" value="終了" onClick="location = 'next_url.html'">
</form>

type="submit" のボタンを押すから、form の action で指定されている
servlet に制御が渡るんです。

この回答への補足

ありがとうございます。

a-kumaさんが書いたように試してみたのですが
できなかったので。。。

>type="submit" のボタンを押すから、form の action
>で指定されている
>servlet に制御が渡るんです。

はい。ボタンのところだけ、ただのformタグに
してやってみたのですが、指定の仕方が悪いのだと
思うんですけど、真っ白いページがでてきました。
location以下はただ単にhtml名だけでいいのでしょうか?
パスを指定してもだめでした。

それと、ボタンは3つあって、
1ボタン、2ボタン、終了ボタン
があるのですが、終了ボタン以外は
クリックでServletにリクエストを渡す
ボタンにしたいのです。
タグで、TABLEタグを用いてますが、
終了ボタンだけ、Formタグを別にすることが
できませんでした。。
なにか方法がありましたら教えてください。

補足日時:2001/08/15 11:38
    • good
    • 0

<補足>


FORMにはMETHODがあって、
<FORM METHOD="GET">とか<FORM METHOD="POST">とか指定します。
これらはそれぞれ、javax.servlet.http.HttpServletのdoGet()やdoPost()メソッドが受け取ります。

<a href = "次のURL?aaa=AAA&bbb=BBB"></a>
というような指定で次のURLやServletに飛んだときの動作は
次のフォームの動作と等しくなります。
つまり、<a href></a>はGETの動きをするんです。

<FORM METHOD="GET" ACTION="次のURL">
<INPUT TYPE="submit">
<INPUT TYPE="hidden" name="aaa" value="AAA">
<INPUT TYPE="hidden" name="bbb" value="BBB">
</FORM>

同様に、ブラウザのアドレスバーからURLを打ち込んだ場合もGETメソッドと等しい動作をします。

この回答への補足

POSTで受け取るようにしています。


うーん。。。
流れとしては、

1.JSPの終了ボタンをクリックすると、
Servletにリクエストが送信され、
2.Beanで処理、
3.その後、ServletがJSPを呼び出す

という感じですよね?

それで、やりたいのは、
JSPの終了ボタンクリックによって
JSPを表示するのではなくて、
別に存在するHTML画面を表示させたいんです。
画面を移動させたいんです。

結局、JSPの終了ボタンクリックでServletに
制御がわたるので、そこで
なにかしないといけないんですか???

補足日時:2001/08/15 10:46
    • good
    • 0

その処理を行うには、HTMLの<FORM>の知識が必要です。


JavaScript(onclick等)を使用して、もう少し複雑な処理をするなら、
JavaScriptの知識も多少必要です。

SUBMITをするときのアクション先は、
<FORM>タグのactionに次のURLやServletのURLを書きます。
<FORM action="次のURL">
<INPUT TYPE = "submit" NAME="EXT" VALUE ="終了">
</FORM>

基本的に<INPUT>タグは<FORM>タグの中にあるものです。
同じサーブレットに飛んでしまうのは<FORM>タグが無いために、
現在のURLに対してSUBMITしているのだと思います。

この回答への補足

ありがとうございます。

<FORM action="次のURL">
<INPUT TYPE = "submit" NAME="EXT" VALUE ="終了">
</FORM>

これはやっております。
Formタグには、Servletのアドレスを書いているので
Servletにリクエストが送信されるのは分かるのですが、

たとえば。。。
onclick以下にselef.close()等と続けると、
Servletにはリクエストは送信されず、
ブラウザを終了してくれたので、
onclick を使えばいいのかなあと
安直に思ったものですから。。。

補足日時:2001/08/15 10:42
    • good
    • 0

お探しの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でその値を使おうとすると、エラーとなります。

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

Qブラウザの×(閉じる)ボタンのイベントを拾いたいのですが

現在servlet,JSPでwebサイトを作っていて(webserver:Apache2.x - Tomcat4.x)、
ユーザーの2重ログイン防止の為に
(1)ユーザーが×(閉じる)ボタンを押した時
(2)セッションタイムアウトになった時
のイベントを拾ってDBへの書き込み処理をしたいのですが、
どのようにやればよいのかわかりません。
((2)の場合SessionListenerというのがあると聞いたのですが、使い方がいまいち分からず・・・)

servletプログラミングで上の2つのイベントの拾い方をご存知の方がいたら教えていただきたいです。
よろしくお願いします。

Aベストアンサー

すみません。
見落としていました。

No.3 の補足で、
> HttpSessionBindingListenerを実装したクラスでgetAttribute()できました
と記述されていますが、これ自体が問題です。

No.4 で記述したように
> 2.アプリケーションでinvalidate()が呼ばれてセッション自体が消えた
> 3.セッションタイムアウトでセッション自体が消えた
という場合にも、valueUnBound()が呼ばれます。
そして、これらの場合、セッションが無効化されてから valueUnBound()
が呼ばれてしまうので、今問題になっているような状況になります。

これについては、ログオフ処理で利用するHttpSessionの情報を
1つのクラスにまとめ、そのクラスに HttpSessionBindingListener
を実装します。そして、valueUnBound() で自分自身のフィールドに
アクセスして処理を行うようにします。

こうすることで、invalidate() でセッションが無効化されて valueUnBound()
が呼ばれても、valueUnBound() を持つクラスのインスタンス自体は
破壊されていないので、情報が取得できます。


すなわち、
> valueUnBound()の中では
> 1)セッション情報を取り出す
> 2)取り出した値を使ってDBに書き込みする
> 3)セッション情報を破棄する
2) で本来取り出されるクラスにvalueUnBound() を実装して、
そこでDBへの書き込みを行うようにします。
この場合、1) は特に不要(自分自身に情報が存在するから)ですし、
3) はログオフの処理を行っている場所で呼び出すようになります。

すみません。
見落としていました。

No.3 の補足で、
> HttpSessionBindingListenerを実装したクラスでgetAttribute()できました
と記述されていますが、これ自体が問題です。

No.4 で記述したように
> 2.アプリケーションでinvalidate()が呼ばれてセッション自体が消えた
> 3.セッションタイムアウトでセッション自体が消えた
という場合にも、valueUnBound()が呼ばれます。
そして、これらの場合、セッションが無効化されてから valueUnBound()
が呼ばれてしまうので、今問題になっているよう...続きを読む

QJSPでリンクを利用してパラメータを次画面に渡す方法について。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">
---------------------------------------------------------------------

としておりますが、次画面へ遷移すると、ID_Bの値はnullとなってしまうために、正常にデータの取得ができません。

二つのパラメータを使用する場合のパラメータを渡す方法を教えて頂きたいと思います。よろしくお願いします。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">...続きを読む

Aベストアンサー

<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>&ID_B=<%= rs.getString("ID_Bcat_id") %>">番号</a>

としてID_Bを&で繋げればMethod="get"で送れますね。
inputタグで送る場合はformタグでactionアトリビュートに飛ぶjspを指定してsubmitボタンかJavaScriptでsubmitさせなければならないと思います。

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

こんにちは!

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

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

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

Aベストアンサー

>現在、サーブレットから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();'>
としましょう。

QjavaでDBから取得したデータのJSP表示

JAVAでDBから取得し
ArrayList shikakuCdList = shikakuCd_Data();
request.setAttribute("shikakuCdList", shikakuCdList);

JSPでコンボボックスに表示しようと思います
<% ArrayList bumonlist = (ArrayList)request.getAttribute("bumonCdList");%>


<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<option value=" (1)ここの記述方法も  "></option>
<% }%>

という記述にしていますが、うまく動きません。
よろしくお願いします。

Aベストアンサー

><% for ( int i = 0; i < bumonlist.size(); i++ ){%>
><option value=" (1)ここの記述方法も  "></option>
><% }%>
この部分ですが、

もし、shikakuCd_Data()の返すArrayListの中身が
JavaBean(下記はTestBean)であれば、

<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<% TestBean test = (TestBean)bumonlist.get(i); %>
<option value="<%= test.ゲッター %>"></option>
<% }%>

もしくは、useBeanアクションをつかい、
coreライブラリのforEachタグを使って出力する方法もあります。
こちらの方法がお勧めですが。

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...続きを読む

QJSPで