• ベストアンサー

JSPにてDB登録処理

ある、A.htmlのボタンをクリックすると、DB登録処理が実行される プログラムを作成中です。A.htmlからDB登録処理(DBRegist.jsp)の呼び出しは以下の通り行います。 <FORM method="GET" action="DBRegist.jsp"・・・・ DBRegist.jsp内ではDB登録処理が起動され、成功すれば、成功メッセージを出し 「戻る(アンカー)」によりC.html画面へ遷移します。 失敗した場合には、失敗メッセージを出し、やはり「戻る(アンカー」により、 A.htmlに戻りたいと思っております。(A.htmlには登録するデータをテキストボックス 等で指定しているので、それはそのまま表示させておきたいと思っております。 丁度、ブラウザの戻るボタンを押した様な状態で戻りたいと思っております。) DBRegist.jsp内の概略フローは以下の通りです。 <% try { DB登録処理(トランザクション開始、insert等) %> <HTML> . <BODY> <BR><BR> <FONT> 登録に成功しました。</FONT> <A HREF="C.html">[戻る]</A><BR> </BODY> </HTML> <% } catch (Exception e) { ここで、out.println("<font>登録に失敗しました。</font><A HREF=?????>[戻る]</A>" という具合にやりたいと思っております。 } finally { DBクローズ処理 } %> 上記にて、HREF=????の所にA.htmlを記述すると、その画面には遷移しますが、当然テキストボックス等が リセットされた状態となってしまいます。 なにぶん、JSP初心者なもので、 作り自体が「普通こうはやらない」等色々、あると思いますが、 それも含めて、上記の様な事を実現するにはどうすればいいのか教えてください。

  • Vargas
  • お礼率85% (174/204)
  • Java
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.1

自分だったらの話ですが、 JSPでトランザクション処理はやらないですね。 あとサーブレットを使います。 サーブレットないでトランザクション処理を呼び出し、 その結果によって次に表示するJSPを選択します。 MVCを意識して作ると思います。 M:モデル この場合トランザクション処理等 V:JSP   表示にだけ注力します。 C:サーブレット 処理の順番や画面遷移の順番を意識します。 したはサーブレットを使う使わないに関係しませんが、 また前画面の情報が消えてしまうとのことについてですが、 全画面情報はサーブレットにサブミット時に画面に強く結びついたBeanに登録しておき、そのBeanをセッションに保存しておきます。 そうすればどのように戻ったとしても前画面の情報は取得することができます。 JSPの予約語にsessionというのがありますので 使ってみてください。

Vargas
質問者

お礼

ありがとうございました。 sessionのgetAttributeとsetAttributeを使用して実現できました。

その他の回答 (1)

  • dietnma2
  • ベストアンサー率36% (7/19)
回答No.2

「戻る」を押したときにA.htmlの 内容が消えるという問題ですが、 これは当然です。 勝手にはだれも、設定してくれません。 A.htmlを、A.jspにしておき、登録ボタンを 押したときに、設定しているテキストボックス の項目を、#1さんが答えていたセッションなりに 登録しておくと良いでしょう。 そして、エラーとなり、戻るを押された場合は、 A.jspでセッションの中に覚えておいた テキストボックスの値を、設定してあげましょう。 サーブレットとJSPは、中身は同じなので まず今やっている方法で、答えをだすのが いいと思います。 もちろんサーブレットも面白いですよ。 JSPで成功したら、サーブレットで書いてみてください。

Vargas
質問者

お礼

ありがとうございました。 sessionのgetAttributeとsetAttributeを使用して実現できました。

関連するQ&A

  • jspファイルが作れません

    現在、jspを勉強なのですが、jspファイルが作れません。 メモ帳にコードを打ちこんだあと、拡張子に「.jsp」を つけて保存するのですが、テキストファイルのままになって しまいます。(教本に付属CDがあり、サンプルでは「jspファイル」 とちゃんと表示されています) ちなみに、サーブレットやHTMLファイルを作成して、トムキャット で実行することはできています。 jspファイルを作るには何か特別なソフトがいるのでしょうか? ネットをいろいろ検索してみましたが、糸口がつかめず困っています。 このような説明でうまく伝わるか不安ですが、どなたかわかる方がいらっしゃいましたら 教えていただけるとうれしいです。 よろしくお願いいたします。 メモ帳でSample1.jsp作成時のコード内容↓ <%@ page cotentType="text/html; charset=Shift_JIS" %> <%@ page import="java.util.*" %> <html> <head> <title>サンプル</title> </head> <body> <center> <img src="car.gif"><br /> <h2>ようこそ</h2> <hr /> 今<%= new Date() %>です。<br /> お選びください。<br /> <br /> <a href="car1.html">乗用車</a><br /> <a href="car2.html">トラック</a><br /> <a href="car3.html">オープンカー</a><br /> </center> </body> </html>

    • ベストアンサー
    • Java
  • JSPからDBにINSERT処理を行いたいのですが・・・

    JDK1.4.0,Tomcat1.4,Apache1.3.24,DBはAccess2002を使用しています。 HTMLのフォームから入力したパラメータを、確認画面用に作成したJSPへ渡し、 確認画面で表示されたパラメータを、DBに書き込む処理をしたいのですが、 実際のDBには、null値が入ってしまいます。 確認画面をはさまなければ、書き込むことはできたのですが・・・。 必要であれば、ソースコードも添付しますので、どなたかアドバイスをお願い致します。

  • jspでのパラメータでの値渡しについて

    最近、JSPについて勉強していていろいろ作っているのですが、 JSPでサーブレットに値を渡そうとしたのですが、内容がNULLになってしまいます。 HTMLとJSPでは a hrefでのパラメータ渡し方が違うんでしょうか? select.jspからTest.javaへ値を渡したいです。 <a href="/testPrj/Test?myans=ア&toi"><font size="5">ア</font></a> <a href="/testPrj/Test?myans=イ&toi"><font size="5">イ</font></a> <a href="/testPrj/Test?myans=ウ&toi"><font size="5">ウ</font></a> <a href="/testPrj/Test?myans=エ&toi"><font size="5">エ</font></a> とselect.jspでやっており、(変数toiは"問 ○○"みたいな感じです) String myans=(String)req.getParameter("myans"); と サーブレットで受け取ろうとしています。 いろいろとやってみたのですが、サーブレット側で受け取ったmyansを表示させるとnullに なっていました。 よろしくお願いします。

  • DBからの値を取得する方法!?

    始めまして。プログラム初心者です。DBは出来上がってるのですが、DBからの値を取得する文を何処にどうやって書けば良いか分かりません。 以下は自分で書いた文ですが・・・ 値はusernameで、ようこそXXXさんのXXXにログインした人の名前を出すのが目的です JSPの文です↓ <%@ page contentType="text/html; charset=Windows-31J" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <html:html>         <head> <body> <P> <html:html>         <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/> <title>ログインしました</title> <html> <A HREF="/kadai/pass.jsp">パスワード変更</A><br> <A HREF="/kadai/Login.jsp">ログオフ</A> ようこそ <bean:write name="username" scope="session"/> ←これで入力したが反映しません・・・ さん    </body> </html:html> </P> </head> <html> <A HREF="/kadai/pass.jsp">パスワード変更</A><br> <A HREF="/kadai/Login.jsp">ログオフ</A> </body> </html:html> 環境ですがstruts、Oracle、tomcat、eclipseです

  • jsp→jsp間の受け渡し

    現在ある予約システムを作っていて、iteratorを使ってDBの情報をこのような画面で表示させています。 「予約一覧」画面   -----------------  ■| 時間1 | 変数A |   |----------------   | 人数1 | 変数B |    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   -----------------  ■| 時間2 | 変数C |   |----------------   | 人数2 | 変数D |    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 以下は、「予約一覧」JSPのほんの一部です。 <s:iteratorvalue="#session.YOYAKU"status="rowstatus"> 利用時間<s:property value="Time"/><br> 利用人数<s:property value="Customer"/><br> </s:iterator> ■は予約取消のsubmitボタンです。 これを押したらその内容を保持して取消画面に遷移させたいのですが・・・ どちらの■を押しても、遷移すると一番新しい予約情報(この場合時間1の方)しか表示できません。 こちらは遷移先の「取消」画面のJSPです 利用時間<s:property value="#session.Time"/><br> 利用人数<s:property value="#session.Customer"/><br> ■ごとに取得する内容を変更するにはどうすればよいのでしょうか? なにとぞおねがいいたします。

  • JSPのDB接続

    いつもお世話になっております。 只今、JSPでoracleに接続しデータを表示するプログラムを作っていますが、 コンパイルエラーが出てしまい、いろいろと原因を探ってはみたものの うまくいきませんでした。ソースは以下の通りです。 <HTML> <HEAD> </HEAD> <BODY> <%@page import="java.sql.*" %> <CENTER> <% ResultSet rs = null; Class.forName("oracle.jdbc.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/BIT21"); Statement stmt = con.createStatement(); // 実行して結果セットを取得する rs = stmt.executeQuery("SELECT * FROM BOOKMST"); // 結果セットの分だけループして表示する while (rs.next()) { %> <BR> <%= rs.getString("PICTURE") %><BR> <%= rs.getString("SALEDATE") %><BR> <%= rs.getString("PRICE") %><br> <%= rs.getString("ISBNCODE") %><BR> <BR> <% } con.close(); %> </CENTER> </BODY> </HTML> エラーは javax.servlet.ServletException: コールの引数が無効です。 と出てしまいます。 原因がわかる方どうかご教授願います。

    • ベストアンサー
    • Java
  • タイトルタグを打ち込んでもブックマークにタイトルがでません

    タイトルタグを打ち込んでもブックマークにタイトルがでません <HTML> <HEAD><TITLE>在りし日</TITLE></HEAD> <body> <CENTER> <br> <br> <FONT SIZE=3><FONT COLOR="#cc0000"> 在りし日 </FONT></FONT> <br> <br> <img src="abc.jpg"><br> <br> <br> <font size=3><font color="#000000"> 初めてのホームページ制作にチャレンジ中です。 <br></font></font> <A HREF="abc.html">next</A> </CENTER></BODY></HTML> 以上のように打ち込んでいます

    • ベストアンサー
    • HTML
  • ▲▲パソコンの中ではリンクできるが、INET上ではPageが表示されない。。。▲▲

    このように作成しました。INET上ではリンクできません。助けててください。</head>より上はカットしました。 <body> <hr color="#0000FF" style="filter:alpha(opacity=100,finishopacity=0,style=3);" width="350"> <font size="3"><div align="center">Hand-made HTML</div></font> <hr color="#0000FF" style="filter:alpha(opacity=100,finishopacity=0,style=3);" width="350"><br> <br> <font size="2"><div align="center">本日は、Hideyuki.comのHTML講座にお越し頂きまして、ありがとう御座います。<br> ここでは、HTMLについてご説明しています。勿論サイト自体も、手打ちで作っています。<br> 心行くまで、楽しんでいって下さい。</div></font></td> <br> <HR color="#777777" style="filter:alpha(opacity=100,finishopacity=0,style=3);"> <br> <br>               <font size="3"><a href="Hand-made_HTML_HTML概要.html" style="text-decoration:none;">■HTML概要</a></font><br>                  <font size="2">- HTMLを簡単に説明しています -</font><br> <br>               <font size="3"><a href="Hand-made_HTML_HTML基本.html" style="text-decoration:none;">■HTML基本</a></font><br>                  <font size="2">- HTMLの基本をご説明しています -</font><br> <br>               <font size="3"><a href="Hand-made_HTML_Web概要.html" style="text-decoration:none;">■Web概要</a></font><br>                  <font size="2">- HTMLを深く学ぶ前に少しWebの勉強をしましょう -</font> </body> </html>

    • ベストアンサー
    • HTML
  • JSPでのパラメータ値引き渡し方法

    現在、JSP画面上(a.jsp)にフォーム(テキストボックス)と、リンクラベル(アンカー)があり、 理由があり、テキストボックス内に設定した値(strData)をリンクラベルのリンク先のJSP画面(b.jsp)に 引き渡したいと思っております。現状(抜粋です) 、 <Input Type="text" name="dummy" value=<%=strData %>> <A href='b.jsp?PARAM="<%=strData %>"'>リンク</A> とやったのですが、うまくいきません。(b.jspではデータが空で取得されます。) よくよく考えると、このやり方だと、テキストボックスに値を設定しても strData変数には値が設定されないんですよね。きっと。 と思い、考えをあらため、能動的にテキストボックスの値を取得するメソッドがないかな? とAPIマニュアルを調べたのですが、よくわかりませんでした。 上記の実現方法を教えてください。

    • ベストアンサー
    • Java
  • コントローラの役割はJSPにはやらせないですよね?

    コントローラの役割を、HttpServletだけでなくjspにやらせる構成も 正しい思想の1つなのでしょうか?? 「コントローラ」は、 基本「依頼と、依頼結果をもとにした次の依頼」をする。 という風に役割を捉えていました。 例えば Aに処理依頼をしたあと、 処理が成功したから今度はBに処理依頼をして、 その結果データが 1件以上だったらCに依頼をして、 0件だったら次はDに処理を依頼する。 のような。 そして、それはHttpServletのところにやらせるものなのかと捉えています。 (※間違っているのかもですが。。) しかし、 書こうと思えば、サーブレットを撤廃して、 画面遷移は、x.jsp ⇒ y.jsp ⇒ z.jsp と、サーブレットを介さずにチェーンを作ることも可能だと思います。 (1)そういう仕組もわりと一般的なのでしょうか? (2)jspになんでもやらせすぎると、それぞれのソースが、 ◆A:プレゼンテーション層としての処理なのか?(イテレータでの描画とか) ◆B:ファンクション層の処理なのか?(例えば入力チェック処理など) ◆C:コントローラ層の処理なのか? (各結果を元に、次にどこの処理にどういうデリゲートするのか等処理) がパッと分かりにくく、カオスになりやすいと思っています。 そんな風になるくらいだったら、 コントローラはサーブレットにさせた方が良いと思うのですが、あえて全てJSPにさせるメリットもあったりするのでしょうか? ◆確認 画面遷移は、コントローラの役割だと思っていたのですが、 もしかしたらそこが間違っているのでしょうか? (WEB系の開発かどうかでも違うのかもですが。) .

専門家に質問してみよう