連載
» 2009年03月02日 00時00分 公開

Webアプリの常識をJSPとStrutsで身につける(7):Webアプリ開発の常識、バリデーションとテンプレート (1/3)

本連載は、JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外(PHPやASP.NET、Ruby on Railsなど)の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です

[中粼直樹,株式会社メセナ・ネットコム]

 今回は、業務で使うWebアプリケーションの開発において“常識”となっている“バリデーション”と“テンプレートエンジン”について2本立てで説明していきます。

いまさら人には聞けない「バリデーション」とは

 Webアプリケーションを作成する際には入力した値に対して未入力チェック、文字列長チェック、型チェックなどの“検証”の仕組みは欠かせません。

 連載第4回の「HTMLやStrutsに必須の“タグ”と“サブミット”の常識」で紹介した、入力フォームにアプリケーション利用者が情報を入力する際に、アプリケーション提供者側からすると好ましくない情報を“検証”して、入力させないなどすることによって余計なデータを減らす重要な機能です。

 また、後の連載で紹介するWebアプリケーションの脆弱(ぜいじゃく)性として、バッファオーバーフロークロスサイトスクリプティングなど「入力フォームからの攻撃」があります。バリデーションは、これを防ぐうえでも重要な機能となります。

StrutsにはValidatorプラグインがある!

 Strutsでは、検証のルールが用意されエラー出力処理なども「Validator」というフレームワーク(プラグイン)で提供されています。これを利用することで、バリデーション機能を実現できます。検証ルールの追加や変更が可能ですべて設定ファイルベースで行えるのでソースコードの修正が不要であるのが大きな特徴です。

図1 Validatorプラグインの仕組み 図1 Validatorプラグインの仕組み

 ここでは、Struts Validatorに標準で用意されている検証ルールを紹介していきます。

表1
ルール名 エラーメッセージのキー 説明
required errors.required 未入力チェック
validwhen errors.required ほかのフィールドの値を参照し、未入力チェック。ほかの指定したフィールドの値が任意の値の場合、指定のフィールドが未入力ならばエラー処理ができる
minlength errors.minlength 最小文字列長チェック
maxlength errors.maxlength 最大文字列長チェック
mask errors.invalidd 正規表現にマッチするかチェック
byte errors.byte byte型として正しいかチェック
short errors.short short型として正しいかチェック
integer errors.integer int型として正しいかチェック
long errors.long long型として正しいかチェック
float errors.float float型として正しいかチェック
double errors.double double型として正しいかチェック
date errors.date 日付として正しいかチェック
intRange errors.range 指定した範囲内の整数であるかチェック
floatRange errors.range 指定した範囲内の整数であるかチェック
doubleRange errors.range 指定した範囲内の整数であるかチェック
creditCard errors.creditcard クレジット番号の書式として正しいかチェック
email errors.email メールアドレスの書式として正しいかチェック
url errors.url URLの書式として正しいかチェック

Strutsでバリデーションをするには?

 これらの検証ルールを使ってWebアプリケーションを作成していきます。バリデーション機能を使用するに当たって、以下のファイルの編集や作成が必要です。

  1. Struts設定ファイルの編集(Validatorプラグインの設定)
  2. ActionFormの編集(ValidatorFormを継承)
  3. Validator設定ファイルの作成
  4. メッセージリソースファイルの編集(エラーメッセージの準備)
  5. JSPの編集(エラーメッセージ表示)

 それでは、「どのような記述が必要なのか」「どのような意味があるか」を編集するファイルごとに説明していきます。

【1】Struts設定ファイルの編集

 Struts設定ファイル(struts-config.xml)にValidatorプラグインを設定します。プロパティ「pathnames」の値にValidator設定ファイルのパスを記述します。Validator設定ファイルの説明は後ほど行います。以下の内容をStruts設定ファイルに追加してください。

<!-- メッセージ・リソースファイルの指定 -->
<message-resources parameter="resources.application"/>
<!-- Validatorプラグインの設定 -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
    value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

 Struts設定ファイルでは、検証のルールでエラーがあった際にエラーメッセージを表示する画面の指定やValidatorで検証を行うかどうかを指定できます。以下の内容をStruts設定ファイルに追加してください。

<action-mappings>
  <!-- Validatorを行う場合validate属性をtrueに指定
  Validatorのエラーを表示する画面をinput属性で指定 -->
  <action path="/input" type="study.struts.action.InputAction"
    name="inputForm" scope="request" validate="true"
    input="/WEB-INF/jsp/input.jsp">
    <forward name="success" path="/WEB-INF/jsp/confirm.jsp"/>
  </action>
</action-mappings>

 次ページでは、Strutsでバリデーションを使うための設定の仕方を紹介し、テンプレートとテンプレートエンジンについて解説します。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。