【Java & Tomcat】サーブレットで入力値チェックを行う(サンプルプログラム付き)

  • このエントリーをはてなブックマークに追加
  • Pocket

クライアント側から入力されたデータを元に動作するようなサーブレットを作成する際に必要となるのが入力値チェックである。今回はその方法について説明する。

サーブレットで入力値チェックをする方法

入力値チェックとは、入力されたデータが要求どおりのデータかどうかをチェックすることである。例えばパスワードを設定する時、数値だけとか8文字以上とか、入力するデータに制限を設けている入力画面を見たことがあるだろう。

このチェックをクライアント側で行うこともできるが、ここではサーブレット側で行う方法を示す。

画面から入力されたパスワードをチェックする場合、まずリクエストからパラメータの名前を指定してデータを取り出す。

String password = request.getParameter("password");

次に、取り出したデータをチェックする。最初にチェックしなければならないのは、データが「null」でないことである。もし、「null」ならメソッドを呼び出すことができないので、チェックのしようがない。それで、最初にnullチェックを行う。

このチェックが終われば、文字列クラスのメソッドが呼び出せる。文字列に8文字以上のデータが入っていることをチェックしよう。文字列の長さを求めるメソッドlength()を呼び出してチェックする。

この後に続くチェックはいろいろあるだろう。ここでは、8文字以上のデータがすべて数字でなければならいとしよう。この場合、文字の整数への変換を利用してチェックできる。

では、実際のサンプルプログラムを見てみよう。

サーブレットで入力値チェックを行うサンプルプログラム

このサンプルプログラムは、画面に入力された名前とパスワードの入力値をチェックしている。名前は何らかの文字が入力される必要がある。パスワードは8文字以上の数値であることをチェックする、最後、正しく入力されたかどうかをチェックの結果として表示する。

サーブレットの配置とプログラムのコードは次のようになっている。

最初にHTMLで書かれたパスワード入力画面のコードを示す。

次に、HTML画面から入力された値をチェックするサーブレットのコードを示す。

実行結果

ブラウザにURL:http://localhost:8080/Servlet/ inputcheck.htmlを入力し、Enterを押す。

表示されるブラウザ画面:

何も入力しないでチェック実行をクリックする。

表示されるブラウザ画面:

前の入力画面に戻り、名前に「abc」を、パスワードに「123」を入力して、チェック実行をクリックする。

表示されるブラウザ画面:

前の入力画面に戻り、名前に「abcefghi」を、パスワードに「1234567x」を入力して、チェック実行をクリックする。

表示されるブラウザ画面:

前の入力画面に戻り、名前に「abcefghi」を、パスワードに「12345678」を入力して、チェック実行をクリックする。

表示されるブラウザ画面:

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] アノテーションの宣言をする。
  • [2] HttpServletを継承して、ServletInputCheckクラスを定義する。
  • [3] String型参照変数messageOfNameCheckを宣言する。
  • [4] String型参照変数messageOfPasswordCheckを宣言する。
  • [5] doGet()メソッドをオーバーライドして定義する。
  • [6] responseオブジェクトの文字コードにUTF-8を設定する。
  • [7] responseオブジェクトから名前を参照変数nameに取得する。
  • [8] responseオブジェクトから名前を参照変数passwordに取得する。
  • [9] messageOfNameCheckに「正しく入力されました。」を設定する。
  • [10] checkName()メソッドを呼び出して名前(name)のチェックを行う。
  • [11] messageOfPasswordCheckに「正しく入力されました。」を設定する。
  • [12] checkPassword ()メソッドを呼び出してパスワードの(password)のチェックを行う。
  • [13] Content Typeを設定する。
  • [14] HTMLを出力するためのPrintWriterオブジェクトを取得する。
  • [17]-[21] PrintWriterオブジェクトに、名前とパスワードをチェックした結果を表示するHTMLコードを出力する。

 

  • [40] 名前の入力値チェックを行うcheckName()メソッドの宣言を行う。
  • [41]-[43] nullチェックを行う。
  • [44]-[46] 入力文字列が空かどうかのチェックを行う。

 

  • [50] パスワードの入力値チェックを行うcheckPassword()メソッドの宣言を行う。
  • [51]-[53] nullチェックを行う。
  • [54]-[57] 入力文字列の長さのチェックを行う。
  • [58]-[60] 入力文字列の数値のチェックを行う。

 

  • [70]-[73] nullチェックを行うcheckNull ()メソッドの宣言を行う。
  • [80]-[83] 文字列の空チェックを行うcheckEmpty ()メソッドの宣言を行う。
  • [90]-[93] 文字列の長さチェックを行うcheckLength ()メソッドの宣言を行う。
  • [100]-[103] 文字列の数値チェックを行うcheckNumber ()メソッドの宣言を行う。

まとめ

このように入力値チェックを予め行っておくことで想定外のデータ入力を防げるため、プログラムの主目的となる部分の構造が簡単に出来る上に誤動作も防げるというメリットがある。サンプルプログラムの条件を色々と自分なりに変更して動作させてみよう。

 

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*

ゼロからエンジニアを目指す方へ
短期間でエンジニアになる方法

必要な勉強や技術の最新動向、本当に使えるIT資格、学習に役立つ国からの奨励金などの情報を無料でお届け

資料を見てみる