• ベストアンサー

JSP+Servletで終了ボタン

JSPで、終了ボタンをクリックしたときに、 ブラウザを閉じる、といった処理は <INPUT TYPE = "submit" NAME="EXT" VALUE ="終了" onclick ="window.close();"> などでできるとあったのですが、 終了ボタンで、ページ(JSPではなく、 HTML)を移動する場合、onclick=以下に HTMLのアドレスを書いたらいいのでしょうか? やってはみたのですが、うまくいきませんでした。 うまくいかないというのは、 そのままServletにリクエストがわたるようで、 表示ページから何も移動しないということです。 また、<a href = "・・・></a>という リンクのタグもやってみましたが、 ランタイムエラーがでてしまいました。 何か外しているようでしたら、教えていただきたい のですが。。。。

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

  • ベストアンサー
  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.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"; } **********************

noname#2205
質問者

補足

kuro_73さんのコードでやってみると できました!!! 有り難うございます!! 大変感謝しております。

その他の回答 (3)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

こういうことでしょ。 <form> <input type="button" value="終了" onClick="location = 'next_url.html'"> </form> type="submit" のボタンを押すから、form の action で指定されている servlet に制御が渡るんです。

noname#2205
質問者

補足

ありがとうございます。 a-kumaさんが書いたように試してみたのですが できなかったので。。。 >type="submit" のボタンを押すから、form の action >で指定されている >servlet に制御が渡るんです。 はい。ボタンのところだけ、ただのformタグに してやってみたのですが、指定の仕方が悪いのだと 思うんですけど、真っ白いページがでてきました。 location以下はただ単にhtml名だけでいいのでしょうか? パスを指定してもだめでした。 それと、ボタンは3つあって、 1ボタン、2ボタン、終了ボタン があるのですが、終了ボタン以外は クリックでServletにリクエストを渡す ボタンにしたいのです。 タグで、TABLEタグを用いてますが、 終了ボタンだけ、Formタグを別にすることが できませんでした。。 なにか方法がありましたら教えてください。

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.2

<補足> 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メソッドと等しい動作をします。

noname#2205
質問者

補足

POSTで受け取るようにしています。 うーん。。。 流れとしては、 1.JSPの終了ボタンをクリックすると、 Servletにリクエストが送信され、 2.Beanで処理、 3.その後、ServletがJSPを呼び出す という感じですよね? それで、やりたいのは、 JSPの終了ボタンクリックによって JSPを表示するのではなくて、 別に存在するHTML画面を表示させたいんです。 画面を移動させたいんです。 結局、JSPの終了ボタンクリックでServletに 制御がわたるので、そこで なにかしないといけないんですか???

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.1

その処理を行うには、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しているのだと思います。

noname#2205
質問者

補足

ありがとうございます。 <FORM action="次のURL"> <INPUT TYPE = "submit" NAME="EXT" VALUE ="終了"> </FORM> これはやっております。 Formタグには、Servletのアドレスを書いているので Servletにリクエストが送信されるのは分かるのですが、 たとえば。。。 onclick以下にselef.close()等と続けると、 Servletにはリクエストは送信されず、 ブラウザを終了してくれたので、 onclick を使えばいいのかなあと 安直に思ったものですから。。。