質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

20191閲覧

入力フォーム欄の入力チェックとエラーメッセージ表示・投稿処理停止

gamebox

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2016/05/29 01:08

###背景
java(jsp/サーブレット)を使って、簡易掲示板を作っています。
ところが、この掲示板は入力チェックを行っていないため、
チェック機能が必要です。 どのようにやったら良いかわかりません。
アドバイスを頂けないでしょうか?

###実現したいこと
・入力フォーム欄の入力チェック(空白・最大文字数など)
・入力チェックで、引っかかったものは、エラーメッセージ表示
・エラーメッセージがあるとき、投稿処理を行わない。

###ソースコード(jsp)
<%@ page contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id='bbsdata' scope='request' class='BBSDataBeans' type="BBSDataBeans" />

<HTML><HEAD><TITLE>JSP掲示板</TITLE> <BODY TEXT=#ffffff VLINK=#ff0000 LINK=#ff8888 BGCOLOR=#000000> <CENTER><H1>JSP掲示板</H1></CENTER> <FORM action=bbsserv method=post> <HR> <INPUT type=hidden value="WRITE" name=function> 名前: <INPUT maxLength=20 size=21 name=name><BR> メルアド: <INPUT size=40 name=email><BR> タイトル: <INPUT maxLength=50 size=51 name=subject><BR> 内容:<BR> <TEXTAREA name=content rows=5 wrap=off cols=70></TEXTAREA><BR> <FONT size=-1> <BR> 削除用暗証番号 <INPUT type=password size=10 name=pass> <P> <CENTER><INPUT type=submit value=" 投 稿 "></CENTER> </FORM> <FORM action=bbsserv method=post> <HR SIZE=4> <!---------------------------------------------->

<%!
int i, j;
%>
<%
for(i = 0; i < bbsdata.getNumOfItems(); i ++) {
%>
<FONT SIZE=+2 COLOR=GREEN><B><U><%= bbsdata.getSubject(i) %></U></B></FONT><BR>
<B>名前:</B><%= bbsdata.getName(i) %>
<B>メール:</B><A HREF="mailto:<%= bbsdata.getEmail(i) %>"><%= bbsdata.getEmail(i) %></A>
<input type=checkbox name="delIndex" value="<%= bbsdata.getIndex(i) + i %>">削除

<P> <%= bbsdata.getContent(i) %><BR> <HR> <% } %> <!----------------------------------------------> <HR SIZE=4> <TABLE BORDER=0> <TR> <TD> <P> 暗証番号入力: <INPUT type=hidden value="DELETE" name=function> <INPUT type=password size=10 name=pwd> <INPUT type=submit value="削除"><BR> </FORM> </TD> <TD WIDTH=50></TD> <TD> </TD> </TR> </TABLE> <!----------------------------------------------> <HR SIZE=4>

<%
if (bbsdata.getNumOfItems() != bbsdata.maxItemsPerPage) {
%><CENTER>最後のページです</CENTER><%
}
else {
%><CENTER><FORM action=bbsserv method=POST>
<INPUT type=hidden value=<%= bbsdata.getLastIndex() + 1 %> name="index">
<INPUT type=submit value="次のページ">
</FORM></CENTER><BR><%
}
%>

</BODY></HTML>

###ソースコード(サーブレット)

import java.io.;
import javax.servlet.
;
import javax.servlet.http.*;

public class BBSServlet extends HttpServlet {

///////////////////// メンバ変数 ///////////////////

ServletContext sc;
BBSManagerBeans bbsManager;

///////////////////// 初期化 ///////////////////

public void init(ServletConfig config)
throws ServletException
{
super.init(config);
sc = getServletContext();

String dataPath = config.getInitParameter("datapath"); if (dataPath == null) { dataPath = ""; } bbsManager = (BBSManagerBeans)sc.getAttribute("bbsmanager"); if (bbsManager == null) { bbsManager = new BBSManagerBeans(dataPath); sc.setAttribute("bbsmanager",bbsManager); }

}

///////////////////// "POST"メソッド ///////////////////

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
doGet(request, response);
}

///////////////////// "GET"メソッド ///////////////////

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
BBSDataBeans bbsData = new BBSDataBeans();

String data = request.getParameter("function"); if (data == null) { doBBSRead(request, response, bbsData); } else if (data.compareTo("WRITE") == 0) { doBBSWrite(request, response, bbsData); } else if (data.compareTo("DELETE") == 0) { doBBSDelete(request, response, bbsData); } request.setAttribute("bbsdata",bbsData); sc.getRequestDispatcher("/bbs.jsp").forward(request, response);

}

///////////////////// メッセージの削除 ///////////////////

public void doBBSDelete(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData)
throws IOException, ServletException
{
String delindex = request.getParameter("delIndex");
if (delindex == null) {
bbsManager.ReadArticles(0, bbsData);
return;
}
int index = Integer.parseInt(delindex);

String password = request.getParameter("pwd"); if (password == null) { bbsManager.ReadArticles(0, bbsData); return; } bbsManager.DeleteItem(index, password); bbsManager.ReadArticles(0, bbsData);

}

///////////////////// メッセージの投稿 ///////////////////

public void doBBSWrite(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData)
throws IOException, ServletException
{
BBSItem item = new BBSItem();

item.name = KanjiConv.ConvJStr(request.getParameter("name")); if (item.name == null) item.name = ""; item.email = KanjiConv.ConvJStr(request.getParameter("email")); if (item.email == null) item.email = ""; item.subject = KanjiConv.ConvJStr(request.getParameter("subject")); if (item.subject == null) item.subject = ""; item.content = KanjiConv.ConvJStr(request.getParameter("content")); if (item.content == null) item.content = ""; item.deleteKey = KanjiConv.ConvJStr(request.getParameter("pass")); if (item.deleteKey == null) item.deleteKey = ""; bbsManager.AddItem(item); bbsManager.ReadArticles(0, bbsData);

}

///////////////////// メッセージの読み出す ///////////////////

public void doBBSRead(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData)
throws IOException, ServletException
{
int index, lastIndex;
String strIndex = request.getParameter("index");
if (strIndex != null) {
index = Integer.parseInt(strIndex);
}
else {
index = 0;
}

bbsManager.ReadArticles(index, bbsData);

}

public void destroy()
{
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

入力チェックを実行した結果、エラーだと判定した結果をメッセージに表示し、もとの画面を再度表示するのでしたら、以下のようにすると良いでしょう。

  • エラー情報を格納する領域を リクエスト属性に作る、というルールを作る(例えば、属性名がerror_から始まるものはエラー情報を格納するものと決める)
  • なんらかのエラーがあった場合は、

(1)エラー情報をリクエスト属性に格納し、
(2)登録処理を行わず、もとの入力画面へ戻る
※例えば、入力パラメータ emailにエラーがあった場合は次のようにする
request.setAttribute("error_email","emailに誤りがあります");

  • 入力画面のJSPでは、入力項目の個所で、リクエスト属性に error_email が存在するかをチェックし、存在した場合は、エラーメッセージを出すロジックを書く

投稿2016/05/29 03:58

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問