Javaの掲示板で未入力のチェックを行う方法

このQ&Aのポイント
  • Javaの掲示板で未入力のチェックを行っている場合、未入力の表示と一緒に空欄の投稿ができてしまう問題があります。
  • この問題を解決するためには、サーブレットで入力値のチェックを行い、空欄の場合にエラーメッセージを表示する必要があります。
  • 具体的には、getParameterメソッドを使用して入力値を取得し、if文で空欄かどうかを判定します。空欄の場合はエラーメッセージを設定し、setAttributeメソッドでリクエストにエラーメッセージを追加します。
回答を見る
  • ベストアンサー

javaの掲示板について

サーブレットにおいて未入力のチェックを行っているのですがこのままだと、未入力の表示と一緒に空欄の投稿ができてしまいます。 String sendMessage = request.getParameter("sendMessage");               String name = request.getParameter("name"); if(name.equals("")){ errorname = "名前を入力してください"; request.setAttribute("errorname",errorname); } Message message = new Message(); message.setName(name); Vector messageList = dao.getMessageList(); request.setAttribute("MESSAGE_LIST", messageList); ServletContext sc = this.getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/bbs.jsp"); rd.forward(request, response); } catch (Exception e) { e.printStackTrace(); } 空欄の投稿がされないようにするにはどうすればいいのでしょうか? 全く思いつかないので詳しく説明をお願いします。

  • ofuoo
  • お礼率76% (23/30)
  • Java
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

未入力のチェックを行い、未入力だった場合、DBへの登録を行わない。

関連するQ&A

  • javaの掲示板について

    サーブレットの削除機能の抜粋なのですが public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { MessageDao dao = new MessageDao(); String sendMessage = request.getParameter("sendMessage"); String deleteMessage = request.getParameter("deleteMessage"); //削除 if(deleteMessage != null){ String sql = "SELECT * FROM MESSAGE_TABLE where ID ="; String rsPassword = request.getParameter("rsPassword"); String deleteid = request.getParameter("id"); String deletepassword = request.getParameter("deletepassword"); if (deletepassword.equals(sql) || deleteid.equals(sql)){ dao.deleteMessage(delete); success = "削除しました。"; request.setAttribute("success", success); } if (!deletepassword.equals(sql) || deleteid.equals(sql)){ errorpass = "パスワードが違います。"; request.setAttribute("errorpass", errorpass); } } ------------------------------------------------------------------------------------ jsp部分 <input type="deletepassword" size="20"> <input type="hidden" name="id" value="<%= message.getId() %>"> <input type="hidden" name="rsPassword" value="<%= message.getPassword() %>"> <input type="submit" name="deleteMessage" value="削除"> それぞれをこの様な書き方で記述した場合、削除ボタンを押された際に削除フォームに入力されたパスワードとidをデータベース内に格納されているパスワードとidと比較して削除、もしくはエラーという様にできているでしょうか?できていなければ変更点の御指摘をお願いします。 ------------------------------------------------------------------------------------ <% String errorpass = (String)request.getAttribute("errorpass"); if(errorpass != null){ out.println(errorpass); } %> またjspの表示部分を上記のようにしているのですが、out.printlnを使わないで記述する場合どのように書けばよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • javaの掲示板について

    サーブレットの削除機能の抜粋なのですが public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { MessageDao dao = new MessageDao(); String sendMessage = request.getParameter("sendMessage"); String deleteMessage = request.getParameter("deleteMessage"); if(deleteMessage != null){ String deleteid = request.getParameter("id"); String deletepassword = request.getParameter("deletepassword"); String rsPassword = request.getParameter("rsPassword"); if (deletepassword.equals("rsPassword") || deleteid.equals("id")){ Message message = new Message(); message.setId(Integer.parseInt(deleteid)); } if (!deletepassword.equals("rsPassword") || deleteid.equals("id")){ } } 削除成功や、削除パスが違う時に投稿用jspに文を表示して、かつレコードを消すという処理をしたいのですが、そのような記述はどのようにすればいいのでしょうか? 今のままだと判定だけして終わっていると思うのですが思いつきません。 よろしくお願いします。

  • Servletでのエラーページへの転送方法について

    ServletでDBにアップロードするページをつくろうとしてます。そこで、登録フォームの入力チェックをし、エラーがあればエラーページに転送したいのですがうまくいきません。 下記がプログラムの一部なのですが、 ------------------ (省略) name = req.getParameter("NAME"); // 文字列の長さのチェック(入力文字にエラーがあればエラー文字列を追加) errorMessage += エラーチェックメソッド(name); // エラーメッセージが設定されていたら if(!errorMessage.equals("")) { // request オブジェクトにエラーメッセージを設定 req.setAttribute("error_message", errorMessage); ServletContext sc = getServletContext(); //エラーページへ転送 RequestDispatcher rd = sc.getRequestDispatcher("エラーページURL"); rd.forward(req,res); } } name = new String(name.getBytes("8859_1"),"SJIS"); //登録処理 (省略) -------------------- 登録フォームで無記入で登録して、エラーを発生させてると下記の様なエラーが発生してうまくエラーページに転送ができません。 どの様にエラーページに転送すればいいのかわからず、困ってます。 どのたか、ご教授頂けないでしょうか?よろしくお願いいたします。 -------------------------- エラー内容 'NAME' には、長さ 0 の文字列を格納できません。

    • ベストアンサー
    • Java
  • java質問

    @Override protected String execute(HttpServletRequest request, HttpServletResponse response) { String itemName = request.getParameter("iName"); String jancode = request.getParameter("code"); if (!isValidInput(Name, code)) { return "/Order"; } /** * 入力値のチェックを行う */ private boolean isValidInput(String Name, String code,) { /** 未入力チェック処理(省略)*/ return false; } } これをtrueの場合は request.setAttribute("itemName",Name); request.setAttribute("janCode",code); try { Part image = request.getPart("image"); Long fileName = System.currentTimeMillis(); image.write(fileName.toString()); request.setAttribute("fileName", fileName); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "/WEB-INF/view/orderstragedata.jsp"; } といった処理をしたいのですがtrueはどのように作成すればよいのでしょうか?

  • サーブレットで入力エラー時にエラー画面の出力

    JAVAサーブレットで、わからないことがありお伺いいたします。 名前、タイトル、メッセージが入力されていないと、エラー画面になるように設定したと思っています。 ソースが3つあり、 (1)拡張子jspのソース  ここでBBSの投稿フォームおよび投稿後のフォームの呼び出し (2)拡張子javaのソース  フォームから入力された内容の取得および「bean」へ登録 (3)拡張子javaのソース  投稿内容の値の保持および取り出し となっています。 (2)に if(!isEmpty(name) && !isEmpty(subject) && !isEmpty(message) ){ // beanにフォームデータをセット があるので下記を記述しました。 }else {ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/error.jsp"); rd.forward(request, response); } それでも、どれか一つを抜かして「投稿」ボタンを押しても、元の初期画面に戻ってしまいエラー画面が出ません。 記述の仕方がいけないのでしょうか。 宜しくお願い致します。

  • HTTPステータス 404 - /servlet/Testが表示される

    はじめまして。Javaの初心者です。 どうしてもわからないことがあります。それは、 最初にTest.jspを実行して送信ボタンを押すと、 サーブレットからforwardされてきた「あああああ」 が表示されるのですが、再び送信ボタンを押すと、 「HTTPステータス 404 - /servlet/Test」が表示 されます。なぜなのでしょうか?また、どのようにす れば、404エラーを出すことがなく実行できるのが どうか教えてください。お願いします。 ************************************************* <%-- Test.jsp --%> <%@ page contentType="text/html; charset=Shift_JIS" %> <html> <head> <title>Test</title> </head> <body> <form method="POST" action="/servlet/Test"> <input type="submit" name="submit" value="送信"/><br/> </form> <% if(request.getParameter("submit") != null) { %> <hr/> <%= (String)request.getAttribute("b") %> <% } %> </body> </html> ************************************************* import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*; public final class Test extends HttpServlet { public void doPost ( HttpServletRequest request, HttpServletResponse response ) throws IOException,ServletException { request.setAttribute("b","あああああ"); ServletContext sc = this.getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/Test.jsp"); rd.forward(request,response); } } *************************************************

    • ベストアンサー
    • Java
  • [JSP]1Servletから複数フレームにパラメータ渡し

    HTMLの<frame>タグでaaa.jspとbbb.jspを同時に表示させています。 aaa.jspからのフォームの値をHOGEというServletで受取り、 処理したものをaaa.jsp・bbb.jsp共に反映(更新)させるにはどうすれば良いでしょうか? 現状、forwardを2回書いているのですが、下記の様に怒られてしまいます。 (エラー/java.lang.IllegalStateException: レスポンスをコミットした後でフォワードできません ) ============aaa.jspのフォーム=================================== <form name="a1" method="post" action="/HOGE"> <input type="submit" name="GO" value="go"> </form> ================================================================ ============HOGE (サーブレット)================================ public class HOGE extends HttpServlet { public void doPost (HttpServletRequest request, HttpServletResponse response){ //jspに渡すパラメータをセット request.setAttribute("pram1", "judy"); request.setAttribute("pram2", "mary"); //forward準備 ServletContext sc = getServletContext(); RequestDispatcher aaa = sc.getRequestDispatcher("/jsp/aaa.jsp"); ServletContext sa = getServletContext(); RequestDispatcher bbb = sa.getRequestDispatcher("/jsp/bbb.jsp"); try { aaa.forward(request, response); bbb.forward(request, response); //ここでエラー } catch (ServletException e) { } catch (IOException e) { } } } ============================================================== どなたかご存知の方いらっしゃいましたら御教授宜しくお願いします。

  • RequestDispatcherオブジェクトについて。

    データベース表示を行うサーブレットを呼び出す処理を行うには、RequestDispatcherオブジェクトを取得して、そのforwardメソッドを呼び出すだけと聞きましたが、うまくいきません。どなたかどこが悪いか教えてください。 // データベース表示するために、RequestDispatcherを取得 ServletContext cx = getServletContext(); RequestDispatcher rd = cx.getRequestDispatcher( "/netjv/servlet/shuwa.ext_db5_2_1"); // サーブレットを呼び出す rd.forward(request, response); } catch (Exception e) { e.printStackTrace(); } } 後、URL部分にはどこからのパスを書けばよいのでしょうか?あってるか不安です。

    • ベストアンサー
    • Java
  • RequestDispatcher でURL引数の扱い

    はじめまして。SINといいます。 今、ServletとJSPを使っているんですが、JSPからServletにはURL引数を渡す ことはできているんですが、ServletからJSPにはURL引数を渡すことはできるのでしょうか? 色々と調べていたんですが、わからず困っています。 SrvletからJSPへはRequestDispatcher の forward メソッドを使っています。 どなたか知恵をお貸しください。 下記にソースを抜粋したものを書きました。 String nextUrl = "/xxxx/xxxxx.jsp?aaa"; ServletContext context = request.getSession().getServletContext(); RequestDispatcher requestDispatcher = context.getRequestDispatcher(nextUrl); requestDispatcher.forward(request, response);

  • テーブルにレコードを追加するサーブレット。

    HTML画面からservletに接続してMYSQLにてつくったデータベースのテーブルに レコードを追加するプログラム(servlet)を作っています。テーブルを表示させるservlet(ext_db5_2_1.java)と、テーブルにレコードを追加して前出のservlet(ext_db5_2_1.java)を呼び出しテーブル表示をさせるservlet(ext_db5_2_2.java)をつくってます。 windows2000Professional, j2sdk1.4.0_01, MySQL3.23.47, tomcat3.3.1 テーブルにレコードを追加するサーブレット(ext_db5_2_2.java)の問題箇所。 // データベースに追加する値を取得 String number = request.getParameter("number"); String name = new String( request.getParameter("name").getBytes("8859_1"), "JISAutoDetect"); String from_pref =new String( request.getParameter("from_pref").getBytes("8859_1"), "JISAutoDetect"); // SQLを実行して、データベースに追加する StringBuffer buf = new StringBuffer(); buf.append("INSERT INTO OOIWA_SEM ("); buf.append("NUMBER, NAME, FROM_PREF) "); buf.append("VALUES ("); buf.append(number); buf.append(",'"); buf.append(name); buf.append("','"); buf.append(from_pref); buf.append("')"); stmt.executeUpdate(buf.toString()); // データベース表示するために、RequestDispatcherを取得 ServletContext cx = getServletContext(); RequestDispatcher rd =                          cx.getRequestDispatcher("/netjv/servlet/shuwa.ext_db5_2_1");

専門家に質問してみよう