- ベストアンサー
JSP+Servletで終了ボタン
JSPで、終了ボタンをクリックしたときに、 ブラウザを閉じる、といった処理は <INPUT TYPE = "submit" NAME="EXT" VALUE ="終了" onclick ="window.close();"> などでできるとあったのですが、 終了ボタンで、ページ(JSPではなく、 HTML)を移動する場合、onclick=以下に HTMLのアドレスを書いたらいいのでしょうか? やってはみたのですが、うまくいきませんでした。 うまくいかないというのは、 そのままServletにリクエストがわたるようで、 表示ページから何も移動しないということです。 また、<a href = "・・・></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"; } **********************
その他の回答 (3)
- a-kuma
- ベストアンサー率50% (1122/2211)
こういうことでしょ。 <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タグを別にすることが できませんでした。。 なにか方法がありましたら教えてください。
- kuro_73
- ベストアンサー率28% (33/117)
<補足> 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に 制御がわたるので、そこで なにかしないといけないんですか???
- kuro_73
- ベストアンサー率28% (33/117)
その処理を行うには、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 を使えばいいのかなあと 安直に思ったものですから。。。
補足
kuro_73さんのコードでやってみると できました!!! 有り難うございます!! 大変感謝しております。