条件判定後のエラー画面の表示について

このQ&Aのポイント
  • jsp画面で設定した情報をJavaで取得し、テーブルへの登録/削除処理を行っています。
  • 条件に従い、情報の登録/削除処理が出来ない場合は、エラーメッセージを簡易作成/表示して、元の画面に戻る=>再入力(入力情報消去済)と云う手順を踏みたいですが、エラーメッセージ画面が表示されず、入力情報消去済の前画面に戻ってしまいます。
  • 問題になりそうな箇所の指摘をお願いします。
回答を見る
  • ベストアンサー

条件判定後に編集したエラー画面を表示させたい。

 jsp画面で設定した情報をJavaで取得し、テーブルへの登録/削除処理を行っています。 条件に従い、情報の登録/削除処理が出来ない場合は、エラーメッセージを簡易作成/表示して、元の画面に戻る=>再入力(入力情報消去済)と云う手順を踏みたいのですが、条件分岐後エラーメッセージ画面が表示されず、入力情報消去済の前画面に戻ってしまいます。 分岐後のエラー画面記述部分は次の通りです。 {PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title> エラー発生 </title>"); out.println("</head>"); out.println("<body bgcolor='white>"); out.println(" 登録情報に不具合があります。<br>"); out.println(" 登録内容を確認のうえ再登録下さい。<br>"); out.println("<input type='button'"); out.println("value ='前の画面に戻る'"); out.println(" onclick =\"location.href='nnnn(前画面).jsp'\">"); out.println("</body>"); out.println("</html>"); Syste.out/println("エラー表示");} こんな感じです。"エラー表示"はエクリプスのコンソール上に表示されており、この処理は通過している様です。また、終了メッセージを同様の記述で、判断は伴わない場合には正しく出力されているだけに、頭を抱えております。 問題になりそうな箇所の指摘を御願いします。

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#58804
noname#58804
回答No.1

HTMLを生成する記述は特に問題ないと思われます。 分岐に関わらず前画面を呼び出す処理が記述されているのではないでしょうか。 たとえprintlnメソッドを使ってHTMLを出力していても、 その後の処理でディスパッチャのforwardメソッドが呼び出された場合は、 そこで指定されたファイルが呼び出されます。

Adenau
質問者

お礼

 回答有難うございました。 居ました。ディスパッチャのforwardメソッド。 最後迄到達したら正常終了と言う構造でしたので、一番最後に書いておりました。  正常終了後に異常終了処理と構造を変更するのはトホホですが、お陰様ですっきり解決しそうです。 助かりました。

関連するQ&A

  • エラーメッセージの表示

    最近ServletとJSPの勉強を始めたのものです。クライアント側で動くjavaのプログラムではエラーがよくわかり良かったのですが、Servlet,JSPではエラーのメッセージが少なくうまく原因が同定できません。(特にコンパイルは通っているのに、動かないとき)これまではWindowXP上でServletとJSPをうごかしていたのでまだTomcatの画面にSystem.out.println()を使って原因を調べることができました。最近リナックスにて同じ動作をするものを作ろうと思い始めたのですが、System.out.println()がコンソール上に表示できずに困っています。何かいい方法があるのでしょうか。とても困っています。

    • ベストアンサー
    • Java
  • PHPでエラーを元の画面にかえすには

    エラーメッセージを次の画面に行かずに 新規登録ボタンを押したら エラー表示を入力している画面に 表示するにはどうしたら出来ますか? javascriptは触れたことがないので使いたくないです ありましたら簡単なサンプルも教えて下さい 下記は入力フォームです <html> <head><title>新規登録</title></head> <body> <blockquote> <form action = "insert.php" method = "POST"> <br><br>登録画面<br><br> すべての項目入力してください<br> 番号<input type="number" name = "ID"> (一覧画面にない番号を入力してください) <br> <br>氏名<input type="text" size = "50" name = "NAME"><br><br> 住所<input type="text" size = "130" name = "ADDR"><br><br> <input type = "submit" value = "登録する" style ="font-size:20px; width: 100px; height: 40px"> <a href="http://localhost/top.php"> <input type = "button" value = "一覧に戻る" style ="font-size:20px; width: 100px; height: 40px"></A> </body> </blockquote> </form> </body> </html> 空白だったら入力フォームにエラー表示し再度ユーザに入力させたい

    • ベストアンサー
    • PHP
  • webアプリを作ってます。エラーがあります。

    webアプリを作ってます。エラーがあります。 jspで引用符が必要と出てきます。どこがおかしいのかはっきりしません。 jspで引用符が必要と出てきます。どこがおかしいのかはっきりしません。教えて... jspで引用符が必要と出てきます。どこがおかしいのかはっきりしません。 教えてください 原因がわからずで進みません。足りない部分がありますか? ネットでみたけどよくわかりませんでした。 中略 if (teacherId==null || name==null || faculty==null) { getServletContext().getRequestDispatcher("/InputErrorJSP.jsp").forward(request, response); return; } if (department==null) System.out.println("tias1"); //学科が入力されていない学科を空白 department=""; //Beans生成 TeacherInfoBeans teacherInfoBeans = new TeacherInfoBeans(); teacherInfoBeans.setTeacherId(teacherId); teacherInfoBeans.setName(name); teacherInfoBeans.setFaculty(faculty); teacherInfoBeans.setDepartment(department); System.out.println("tias2"); //登録 teacherInfoBeans.insert(); System.out.println("tias3"); //セッション登録 HttpSession session = request.getSession(true); session.setAttribute("teacerInfoBeans",teacherInfoBeans); System.out.println("tias4"); //結果を反映 getServletContext().getRequestDispatcher("/AddReportJSP.jsp").forward(request, response); System.out.println("tias4.5"); } 中略 <%@ page contentType="text/html; charset=Windows-31J" %> <head> <html> <title> 先生情報登録</title> </head> <body> <jsp:useBean id="teacherInfoBeans" class="info.searchman.TeacherInfoBeans" scope="session" /> <h1>先生情報登録</h1> 次の情報を登録しました。 <br> ユーザーID:<jsp:getProperty name=teacherInfoBeans" property="teacherId" /><br> 氏名:<jsp:getProperty name=teacherInfoBeans" property="name" /><br> 所属:<jsp:getProperty name=teacherInfoBeans" property="affiliation" /><br> </body> </html> エクリプス コンソールログ tias2 tib7 insert into teachers values ('3', 'c', 'cc', '') tias3 tias4 2010/04/28 18:21:05 org.apache.catalina.core.ApplicationDispatcher invoke 致命的: サーブレット jsp のServlet.service()が例外を投げました org.apache.jasper.JasperException: /AddReportJSP.jsp(14,30) 引用符が必要です 環境は jdk1.6 eclipse3.2 posgre8.3 tomcat6.0です。 参考書はSCCの改訂 Webアプリケーション構築: 7章問題です。

    • ベストアンサー
    • Java
  • java 全角判定ができなくて困っています。

    今年javaを習いだした初心者です。 現在java servletでユーザの登録画面の作成をしており、 ユーザ名を入力した際に、半角英数字での入力ならばtrue、全角文字での入力であればfalseでエラーを表示したいのですがうまくいきません。 どなたかご教授いただけませんでしょうか? ソースは下記のとおりとなります。 よろしくお願いいたします。 import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletUsersRegistrationScreen extends HttpServlet{ String url = "xxxx” String user = "xx"; String password = "xx"; PrintWriter out; Statement statement; HttpSession session; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { Connection conn = null; try{ // DBに接続 Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url,user,password); }catch( Exception e ) { // エラー画面 response.sendRedirect("error.html"); return; } request.setCharacterEncoding("Windows-31J"); response.setContentType("text/html; charset=Windows-31J"); try{ // インスタンス変数の設定 statement = conn.createStatement(); out = response.getWriter(); session = request.getSession(); //HTMLの出力 out.println("<html>"); out.println("<head>"); out.println("<title>書籍検索システム</title>"); out.println("</head>"); out.println("<body>"); out.println("<left>"); out.println("<p><h1>書籍検索システムの新規登録</h1></p>"); out.println("<p>書籍検索システムのサービス(書籍検索・書籍登録)をご利用いただけます。</p>"); out.println("<p>入力項目はすべて必須です。</p>"); out.println("<fieldset style=\"width:400;height:270;\">"); out.println("<legend>入力する項目</legend>"); //既にユーザー名が登録されている String message = (String)session.getAttribute("ERR_FAILURE"); if(message != null) { out.println("<p><Font Color=\"#ff0000\">"+message+"</Font></p>"); session.setAttribute("ERR_FAILURE", null); } //ユーザー名が入力されていない String message1 = (String)session.getAttribute("ERR_USERNAME"); if(message1 != null){ out.println("<p><Font Color=\"#ff0000\">"+message1+"</Font></p>"); session.setAttribute("ERR_USERNAME", null); } //パスワードが入力されていない String message2 = (String)session.getAttribute("ERR_PASSWORD"); if(message2 != null){ out.println("<p><Font Color=\"#ff0000\">"+message2+"</Font></p>"); session.setAttribute("ERR_PASSWORD", null); } //(再入力)パスワードが入力されていない String message3 = (String)session.getAttribute("ERR_CONFPASSWORD"); if(message3 != null){ out.println("<p><Font Color=\"#ff0000\">"+message3+"</Font></p>"); }} //パスワードと(再入力)パスワードが一致しない String message4 = (String)session.getAttribute("ERR_MISSMACH"); if(message4 != null){ out.println("<p><Font Color=\"#ff0000\">"+message4+"</font></p>"); session.setAttribute("ERR_MISSMACH",null); } //ユーザー名入力数制限の20文字をオーバー String message5 = (String)session.getAttribute("ERR_20OVER"); if(message5 != null){ out.println("<p><Font Color=\"#ff0000\">"+message5+"</font></p>"); session.setAttribute("ERR_20OVER",null); } //パスワードが6文字未満8文字以上 String message6 = (String)session.getAttribute("ERR_6UNDER8OVER"); if(message6 != null){ out.println("<p><Font Color=\"#ff0000\">"+message6+"</font></p>"); session.setAttribute("ERR_6UNDER8OVER",null); } //半角英数判定 String message7 = (String)session.getAttribute("ERR_MISSSPELL"); if(message != null){ out.println("<p><Font Color=\"#ff0000\">"+message7+"</font></p>"); session.setAttribute("ERR_MISSSPELL",null); } out.println("<form method=\"POST\" action=\"Servl

  • JSPのエラー画面(error.jsp)に遷移(移動)しない

    フォームを設定したlogin.htmlから情報を受け取るlogin.jspで検証をして、間違ったid番号を入力した場合はerror.jspに移動させたいのですが、遷移せず、「HTTP 500 - 内部サーバー エラー」となります。 改善のご教示お願い致します。 [login.html] <html><head><title>login.html</title></head> <body><h1>ログイン</h1><hr><br> <form method="post" action="/webapp/JSPtest/login.jsp"> <table> <tr> <td>ID:</td> <td><input type="text" name="id"></td> </tr> </table> <br><br> <input type="submit" value="送信"> <input type="reset" value="キャンセル"> </form> </body> </html> [login.jsp] <%@ page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <%@ page errorPage="error.jsp" %> <html><head><title>login.jsp</title></head> <body> <% String id = "2007"; String data = request.getParameter("id"); StringBuffer temp = new StringBuffer(); if(!id.equals(data)) temp.append("数値間違い<BR>"); if(temp.length() != 0){ throw new Exception(temp.toString()); } %> <h1>こんにちは<%= data %>様</h1> <h1><%= temp.length() %> </h1> </body></html> [error.jsp] <%@page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <%@ page isErrorPage="true" %> <html><head><title>error.jsp</title></head> <body> エラーメッセージ<br> <%= exception.getMessage() %> </body></html>

  • エラーメッセージがうまく表示されません。

    フォームから年月日を取得し、フォーム入力がなかった場合、 エラー表示がされるようにしたいと思っています。 下記のようにif文とサブルーチンで処理しようとしていますが、 何か問題になる点はありますでしょうか? ご教授お願いします。 ### 入力チェック ##### if($in{'year'} eq "" || $in{'mon'} eq "" || $in{'day'} eq ""){ &errer(100,"日にちを指定してください"); } ### エラーチェック ##### sub errer{ ($num,$word) = @_; print <<EOF; <html> <head> <title>エラー</title> </head> <body> Error $num<br> $word<br> <br> <br> <br> <a href="JavaScript:history.back()">戻る</a> </body> </html> EOF }

    • ベストアンサー
    • CGI
  • Tomcatのアプリケーションの呼びでエラー404

    Tomcatのアプリケーションの呼びでエラー404となる ブラウザのURLに下記のコマンドを入力し、   http://localhost:8080/hello/index.html を入力すると下記のようにNGとなる。     何故NGとなるか教えてください。 ●コマンド: http://localhost:8080         メッセージ(OK): 一覧表示する。   ●コマンド: http://localhost:8080/hello/index.html ●メッセージ(NG): ype ステータスレポート メッセージ /hello/index.html ● 説明 The requested resource is not available. ●私の環境項目  Os windows 8.1    プログラム: java SE Development kit 8_ Tomcatバ-ジョン:tomcat6.0 ●Hello.xmlディレクトリ: C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\hello.xml ●Hello.xml の内容:   Context path="\hello" docBase="c:\servlet-sample\helloworld"/> ●Indexディレクトリ:  C:\servlet-sampl\helloworld\index.html ●Index.htmの内容: <html> <head><title>HelloWorld</title></head> <body> <br> <img src="./img/p1.png"> <a href="/hello/helloworld">クリックして下さい</a> <br> </body> </html> ●hellWorldディレクトリ:   C:\servlet-sampl\helloworld\WEB-INF\classes ●HellWord.java(class)の内容: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } }

  • イータックスのエラー

    個人ですが、イータックスにしようと奮戦中です。 右往左往しながらなんとか進んできて、電子証明書の登録の所まで来たようです。 しかし、カードリーダーライターを繋ぎ、カードを入れたところで・・・ エラーメッセージが出てアウトです。 電子証明書登録 処理の終了 の画面ですが、 処理できませんでした。 入力された情報等に基づく処理は行われていません。 ヘルプデスクにお問い合わせください云々とあり エラーコード: AF0020-322 です。 これで何が悪いのか解りましょうか? ヘルプデスクは、9時から20時までなので電話できません。 助けてください。

  • javaで画像をランダムに表示させたい

    ローカルホストで下の三角形をクリックするとランダムに表示されるのですが、 何も表示されません。どうすればよいでしょうか? jsp <%@page contentType="text/html; charset=Windows-31J"%> <HTML> <BODY> <HR> <H2 td align="center" >くじを引いてください</H2></TR> <P td align="center"></TR> <img src="http://www.kk-mind.com/image/hls.jpg" > <BR> <A HREF="../servlet/input.OmikuziServlet"> <img src="http://www.misedas.net/item_images/item_group/l/5007/1418.jpg" NAME="text1" > </A> <HR> </FORM> </BODY> </HTML> JAVA import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class OmikuziServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("Windows-31J"); response.setContentType("text/html; charset=Windows-31J"); PrintWriter out = response.getWriter(); String msg = request.getParameter("text1"); try{ int x = Integer.parseInt(msg); x = (int)(Math.random() * 5) + 1; String strResult = ""; //結果格納用 //数値によって画像を決定 switch(x){ case 0: strResult = "車"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://www.yousaydo.com/shopimages/yousaydo2nd/016006000239.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 1: strResult = "マグカップ"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://image.rakuten.co.jp/world-chara/cabinet/kanai05/img56469445.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 2: strResult = "スリッパ"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://item.shopping.c.yimg.jp/i/j/net-shibuya_ky92601\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 3: strResult = "コップ"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://ec2.images-amazon.com/images/I/31xeukC9NiL._SL500_AA300_.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 4: strResult = "リラック間人形"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://www.san-x.co.jp/relaxuma/campaign/img/59/h5_img05.gif\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 5: strResult = "筆箱"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://www.zakka-bungu.com/site_data/cabinet/py33501-12_1.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; } } catch (NumberFormatException e){ System.out.println("入力が正しくありません"); } } }

  • 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初心者なもので、 作り自体が「普通こうはやらない」等色々、あると思いますが、 それも含めて、上記の様な事を実現するにはどうすればいいのか教えてください。

    • ベストアンサー
    • Java

専門家に質問してみよう