• ベストアンサー

JSP+Servletで終了ボタン

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

noname#2205
noname#2205
  • Java
  • 回答数4
  • ありがとう数2

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

  • ベストアンサー
  • 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 を使えばいいのかなあと 安直に思ったものですから。。。

関連するQ&A

  • jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?

    ・jspページにあるボタンを押すとServletに値を渡す。 ・Servletで処理をする。 ・処理の結果を元のjspページに表示する。 というプログラムを作りたいと考えています。 jspページ→Servletで処理をする、という所までは出来たのですが その後元のページに戻すというところで困っています。 jspページは複数(十数ページ)あり、Servletは1つです。 a.jsp→Servlet→a.jsp b.jsp→Servlet→b.jsp このように、どのjspページから呼ばれても、元のjspページに 戻したいのですが、どのようにすれば実現できるでしょうか?

    • ベストアンサー
    • Java
  • ボタンクリック-JSP判断

    JSP+Servlet+Beanで作ってます。 画面には、テキストとボタンが配置してます。 Aボタンクリックで、テキストに何にも 値が入ってない場合は別のHTMLに移動し、 何か値が入っている場合は テキストをクリアする処理をしたいのですが ・・・ <INPUT TYPE = "button" NAME="RTN" VALUE ="戻る" onClick= <% if(wk.getRtn_tmp()==1){ out.print ("location='http://localhost:8080/form.html'");} else{out.print ("location='http://localhost:8080/servlet/jyohoya.kanri_Srv'") ;} %>> 上記のように、JSPで判断させようと しています。 Beanでrtn_tmpというプロパティを セットしておいて、JSPのIF文で判断させようと思ったんですが・・・ <INPUT TYPE = "submit"・・・>にしておいて、Servletで Aボタンの処理判断をしないといけないのでしょうか。 しかし、JSPのonclick以下で判断ができても よさそうなのですが。。。指定の仕方がおかしいのかもしれません。

    • ベストアンサー
    • Java
  • jsp から servlet に

    パラメータをJSPからServlet に渡す所で、どうしても、null になってしまします‥。 主要な部分だけ書きます。 --jsp-- <jsp:useBean id="beanId" class="Bean" scope="request" /> <form method="POST" action="servlet"> <input type="submit" value="送信"> <input type="text" size="10" name="name"> --servlet-- import Bean; Bean bean = (Bean)request.getAttribute( "beanId" ); // ↑ここが、nullになってしまう。 --Bean-- public String getName() { return name; } public void setName( String name ) { this.name = name; } 考え方が違ってるかも知れないのですが‥。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ServletとJSPで。。。

    省略してますが、下記の記述で JSPの----部分の記述方法がわかりません。 実際、実行できる環境だといいのですが、今は実行環境がないので調査できません。 まだなにもわからない状態なので、記述が正しいかも自信ありませんがよろしくお願いします。 =============Servlet==============================Schedulebean bean = new Schedulebean(); bean.setYear(request.getParameter("year")); bean.setMonth(request.getParameter("month")); request.setAttribute("bean", bean); request.getRequestDispatcher("/jsp/schedulefrm.jsp").forward(request,response); ============ JSP ================== <%@ page contentType = "text/html; charset=Shift_JIS"%> <jsp:useBean id="bean" scope="request" class="java.lang.String"/> <HTML> <FRAMESET FRAMESPACING="10" COLS="250,*"> <FRAME src="/jsp/calender.jsp?Year=<%= year % -------- ↑ >&Month=<%= month %>" --------- ↑    上記をid 取得する記述は? name = "left" scrolling = "no" NORESIZE /> <FRAME src="/jsp/schedule.jsp?Year=<%= year %>&Month=<%= month %>" name = "right" scrolling = "yes" /> </FRAMESET> </HTML>

    • ベストアンサー
    • Java
  • jspからServletにデータを送るには?

    javaを使って開発をしているのですが、 jspからServletにデータを送るのってform型のsubmitでしかできないですか? <a href="~">で行うことは無理でしょうか? ちなみに、form型だと以下のようにしています <form method="post" action ="hogeServlet" > <input type="hidden" name="id" value =<%=hoge.getid() %>> <input type="submit" id="button1" value="ほげ"> </form>

  • JSP&Servletについて

    いつもお世話になっております。 JSP&Servletについての質問です。 ある画面からパラメーターを入力してServletに渡し、 その計算結果をResult.jspの画面に返すというツールを作成しているのですが、なぜか漢字が含まれていると文字化けしてしまいます。 ServletのほうでsetContentTypeメソッドを使っていないからでしょうか? でもResult.jspのほうで以下のようにしているのでいけると思うのですが、、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE>Result</TITLE> </HEAD> <BODY> <H1>Result</H1> <% String result = (String)request.getAttribute("result"); if (result != null){ %> <%= result %> <% } %> </BODY> </HTML> たとえば結果として 2002年と返したい場合 2002?と返ってきてしまいます。 お願いします。

    • ベストアンサー
    • Java
  • サーブレットが起動しない

    HTMLのSubmitボタンを押すと、Sample_Servletにリクエストが 送信されます。そして、JSPを表示します。 その後、JSPのSubmitボタンを押すと 何もかわりません。Servletにリクエストが わたってないのだと思います。 <FORM ACTION ="sample.Sample_Servlet" METHOD = "POST"> ・・・ <INPUT TYPE = "submit" NAME="btn" VALUE ="btn"> としているのですが、、、、 何か心当たりがありましたらお願いします。

    • ベストアンサー
    • Java
  • JSP + ラジオボタン

    JSP+Servlet+Beanで作ってます。 JBuilder5を使ってます。 JSPはラジオボタン、テキスト、ボタン等があります。 <INPUT TYPE = "radio" NAME = "r1" VALUE = "ins">A <INPUT TYPE = "radio" NAME = "r1" VALUE = "upd">B <INPUT TYPE = "radio" NAME = "r1" VALUE = "del">C としています。 たとえば、Bを選択時、ボタンクリックで Servletにリクエストを送信しますが、 Servletから再びJSPを呼び出し、画面を 表示するとき、ラジオボタンはBを選択 させたいのですが、どうしたらいいですか? FormタグのCHECKEDというオプションを どのように使えばいいのか教えていただきたいのですが。 テキストには、Beanでsetメソッド、 JSPでは、<jsp:getProperty・・・>を使って セットできているんですが、ラジオボタンも 同様ですか? @@@・・・JSPのタグを勉強しないといけないです。 @@@勉強不足です。

    • ベストアンサー
    • Java
  • HTTPステータス 404 - /servlet/Testについて

    はじめまして。Javaの初心者です。 どうしてもわからないことがあります。それは、 最初にJSPページでHTMLフォームにデータを入力して <input type="submit"/>タグでサーブレットに送信し て、サーブレットでHTMLフォームのデータ を使用して処理を行わせてから再び最初のJSPページ にリクエストを転送(forward)すると、サーブレット での処理結果が表示されるのですが、そのあと再び HTMLフォームにデータを入力して <input type="submit"/>タグでサーブレットに送信す ると、「HTTPステータス 404 -/servlet/Test」などと 表示され、サーブレットが利用可能でなくなります。 なぜなのでしょうか?どのようにしたら解決できるの かどうか教えてください。お願いします。

    • ベストアンサー
    • Java
  • jsp,servlet,beanの流れについて

    初歩の初歩の質問ですが、参考書等読んでいて混乱してしまっています。宜しくお願いします。 a.jsp(入力画面) a_servlet.java a_bean.java(setのみ) b.jsp(表示画面) b_servlet.java b_bean.java(get,setのみ) というファイルがある時のプログラムの流れは、 (1)a.jsp・・・画面を表示する。データを入力する。登録ボタンを押下する。 (2)a_servlet.java・・・(1)で登録ボタンを押下されたら、a.jspのデータを取得。a_bean.javaへ設定する。b.jspへ飛ぶ。 (3)a_bean.java・・・(2)によりデータが設定されている。 (4)b_servlet.java・・・a_bean.javaのデータを取得し、b_bean.javaに設定する。 (5)b_bean.java・・・(4)によりデータが設定されている。 (6)b.jsp・・・表示データをb_bean.javaより取得後、画面を表示する。削除ボタンを押下する。 (7)b_servlet.java・・・(6)で削除ボタンが押下されたらb.jspのデータを取得し、b_bean.javaへ設定する。 特にbファイルの処理順序で混乱しています。 上記のような流れで考え方は合っているでしょうか。 少々分かりずらいかもしれませんが、間違っていたら小学生でも分かるように教えてください。

    • ベストアンサー
    • Java