TOP比較データ> validation.xmlの追加
徹底比較!! PHP & Java 〜 フレームワーク編
徹底比較!! PHP & Java 〜 フレームワーク編

第5回:Strutsで機能を実装してみよう
著者:ワイズノット  土橋 芳孝   2006/1/20
前のページ  1  2  3  4
validation.xmlの追加

   (10)のvalidation.xmlは、Strutsに備えられた入力チェック機能を利用する際に入力チェックの動作を定義するための設定ファイルです。
validation.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
      "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
      "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

<form-validation>
   <formset>
      <form name="loginForm">
         <field
            property="id"
            depends="required">
            <arg position="0" key="loginForm.id" />
         </field>
         <field
            property="password"
            depends="required">
            <arg position="0" key="loginForm.password" />
         </field>
      </form>
   </formset>
</form-validation>
web.xmlの修正

   (11)のweb.xmlは、Strutsの動作を定義するための設定ファイルです。本連載の第3回からの変更点としては、データベースへ接続するための情報を追記している点です。

web.xml
(省略)
   <filter-mapping>
      <filter-name>EncodeFilter</filter-name>
      <url-pattern>⁄*</url-pattern>
   </filter-mapping>

   <resource-ref>
      <res-ref-name>jdbc/mysql</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
   </resource-ref>


</web-app>
Strutsを利用したサンプル・アプリケーションの動き

   それでは、今回機能を追加したサンプル・アプリケーションがStrutsで動作する様子を見てみましょう。


初期表示の動作

  1. 利用者はWebブラウザでhttp://localhost:8080/Sample/へアクセスする
  2. WebアプリケーションはSample.xmlにより、上記1のURLがSampleというコンテキスト名を持つWebアプリケーションだと認識する
  3. Webアプリケーションは上記1のURLにアクション名が指定されていないため、web.xmlのwelcome-fileタグに記述されたlogin.jspを表示する


ログインの動作

  1. 利用者がログイン画面のログインボタンを押すと/Sample/Login.doへアクセスする
  2. WebアプリケーションはSample.xmlにより、上記AのURLがSampleというコンテキスト名を持つWebアプリケーションだと認識する
  3. Webアプリケーションは上記AのURLがLoginというアクション名で動作する必要があると認識する
  4. Webアプリケーションはstruts-config.xmlのactionタグとform-beanタグにより、ログイン画面のフォームクラスがLoginFormクラスであると認識し、ログイン画面に入力された値をLoginFormクラスに格納する
  5. Webアプリケーションはstruts-config.xmlに記述されたplug-inタグにより、入力チェックの設定がvalidation.xmlに記述されていると認識する
  6. Webアプリケーションはactionタグのvalidate属性が"true"であることを認識し、ログイン画面よりLoginFormクラスに格納された値に対してvalidation.xmlの設定内容に基づいた入力チェックを行う
  7. 上記Fで入力チェックエラーが発生した場合、Webアプリケーションは再度ログイン画面を表示する。Webアプリケーションはstruts-config.xmlのmessage-resourcesタグにより、MessageResourcesファイルにエラーメッセージが記述されていることを認識し、MessageResourcesファイルよりエラーメッセージを読み取ってログイン画面にエラーメッセージを表示する
  8. 上記Fで入力チェックエラーが発生しなかった場合、Webアプリケーションはstruts-config.xmlのactionタグにより、Loginというアクション名で動作するアクションクラスがLoginActionクラスであると認識する
  9. WebアプリケーションはLoginActionクラスを実行する。LoginActionクラスは、Sample.xmlのResourceタグとResourceParamsタグおよびweb.xmlのresource-refタグによりデータベースに接続するための情報を得て認証処理を行う
  10. 上記Iで認証エラーが発生した場合、LoginActionクラスの完了ステータスは"error"となる。Webアプリケーションはstruts-config.xmlのforwardタグを参照し、LoginActionクラスの完了コードが"error"の際はログイン画面を表示しなければならないことを認識するため、再度ログイン画面を表示する
  11. Webアプリケーションはstruts-config.xmlのmessage-resourcesタグにより、MessageResourcesファイルにエラーメッセージが記述されていることを認識し、MessageResourcesファイルよりエラーメッセージを読み取ってログイン画面にエラーメッセージを表示する
  12. 上記Iで認証エラーが発生しなかった場合、Webアプリケーションはデータベースより登録者の情報を読み込んでSampleUserクラスに格納する。登録者情報が格納されたSampleUserクラスはuserslistに格納され、リクエストスコープにセットされる。LoginActionクラスの完了ステータスは"success"となるため、Webアプリケーションはstruts-config.xmlのforwardタグを参照し、LoginActionクラスの完了コードが"success"の際はトップ画面を表示しなければならないことを認識する
  13. Webアプリケーションはtop.jspを表示する。top.jspはLoginFormクラスのid属性の内容を画面に表示するとともに、リクエストスコープに格納されたuserslistを受け取り、画面に登録者情報の一覧を表示する


ログアウトの動作

  1. 利用者がトップ画面のログアウトボタンを押すと/Sample/Logout.doへアクセスする
  2. WebアプリケーションはSample.xmlにより、上記aのURLがSampleというコンテキスト名を持つWebアプリケーションだと認識する
  3. Webアプリケーションは上記aのURLがLogoutというアクション名で動作する必要があると認識する
  4. Webアプリケーションはstruts-config.xmlのactionタグにより、Logoutというアクション名で動作するアクションクラスがLogoutActionクラスであると認識し、LogoutActionクラスを実行する。LogoutActionクラスは処理結果successを返す
  5. Webアプリケーションは上記dの処理結果successとstruts-config.xmlのforwardタグによりlogin.jspを表示する


次回は

   次回はMojaviを使って基本的な機能を実装していきます。

前のページ  1  2  3  4


ワイズノット
著者プロフィール
株式会社ワイズノット  土橋 芳孝
以前はJavaを利用したWebアプリケーション開発とオブジェクト指向設計を得意としていたが、ワイズノットに入社以来、PHPの魅力にとりつかれる。現在はワイズノットのプロジェクトマネージャーとして、PHPをはじめとしたオープンソースの普及に力を注いでいる。


INDEX
第5回:Strutsで機能を実装してみよう
  これまでのサンプル・アプリケーションに機能を追加する
  Sample.xmlの修正
  LoginForm.javaの修正
validation.xmlの追加