学習用WEBフレームワーク作成 その2昨日の続きです。


学習用WEBフレームワーク作成 その1(2008-12-16 - T.RYoken がんばる日記 / TryGun blog)


Controllerクラス AddController.java

public class AddController {  
      /** セッション */
      public EzSession session;
      /** リクエスト */
      public EzRequest request;
      /** レスポンス */
      public EzResponse response;


      /** 初期画面表示 */
      public void index() {
         // クライアントに初期表示する画面(HTML)に対応する
         // ビュークラスを生成し、resuponseにセットします。    
         response.setPage(new Add());
      }


      /** executeボタンが押下された時に呼び出されるメソッド */
      public void execute(Add add) {
         // 画面の入力値をビュークラス(Add)にセットします。
         request.set(add);
         // 入力値の検証を行います。
         add.validate();
         // 入力値を加算し、合計をAdd.totalにセットします。
         add.total = Integer.parseInt(add.value1) + Integer.parseInt(add.value2);
         // クライアントに表示する画面(HTML)に対応するビュークラスをセットします。
         response.setPage(add);
      }
}

画面(HTML)の遷移を制御するクラスです。
画面で押下されたボタン(リンク)の「name属性」と同名のメソッドが呼び出されます。


Controllerクラスの各「プロパティー」について説明します。

(1) EzSession

 /** セッション */
 public EzSession session;

EzSessionクラスは、アプリの利用が開始されてから終了するまでの間、利用可能なオブジェクト格納領域です。例えば、ログインしてから、ログアウトするまでの間、保持する必要のあるオブジェクト(ユーザー情報等)を格納する場合に利用します。


何気なくうれしい機能?
EzWebでは、タブブラウザーに対応しておりますので、タブ毎にEzSessionが作成されます。1ブラウザー、複数タブで、同一のアプリケーションに、アクセスしても問題ありません。

(2) EzRequest

 /** リクエスト */
 public EzRequest request;

EzRequestクラスは、クライアントからの要求から返答(応答)までの間、利用可能なオブジェクト格納領域です。例えば、クライアントから、ログイン要求があってから、クライアントにトップページを表示するまでの間を指します。クライアントから、要求があった場合は、このクラスに画面入力値がセットされます。


何気なくうれしい機能?
EzRequestには、画面入力値が、前回の状況と異なっているか(入力値の打ち変えが発生したか)を判別する「isChange」メソッドがあります。
また、ブラウザーの「戻る」ボタンが押されたかを判別する「isSynchronizing」メソッドもあります。その他色々…

(3) EzResponse

 /** レスポンス */
 public EzResponse response;

EzResponceクラスは、クライアントへの返答(応答)クラスになります。
クライアントへ表示する画面の設定、またはクライアントへダウンロードファイルの送信を行うクラスです。また、後続処理を中断し、設定された画面を即座に表示するための機能(finishメソッド)をもちます。


何気なくうれしい機能?
EzResponseには、クライアントにダウンロードファイルを送信するための「getOutputStream」メソッドがあります。EzResposeより取得したOutputStreamが、実際に利用されない(出力されない)場合は、クライアントへ、画面を表示することが可能です。


具体的にいうと、コントローラーからサービスクラスのメソッドに、「OutputStream」を受け渡し、サービスのメソッド内で、ダウンロード対象データが無いと分かった場合は、画面にエラーメッセージを表示することが可能になります。つまり、サービスからjava.io.Fileを返す必要がなくなります。


Controllerクラスの各「メソッド」について説明します。

(1) index メソッド

 /** 初期画面表示 */
 public void index() {
    // クライアントに初期表示する画面(HTML)に対応する
    // ビュークラスを生成し、resuponseにセットします。    
    response.setPage(new Add());
 }

(2) executeメソッド

  /** executeボタンが押下された時に呼び出されるメソッド */
  public void execute(Add add) {
     // 画面の入力値をビュークラス(Add)にセットします。
     request.set(add);
     // 入力値の検証を行います。
     add.validate();
     // 入力値を加算し、合計をAdd.totalにセットします。
     add.total = Integer.parseInt(add.value1)
                + Integer.parseInt(add.value2);
     // クライアントに表示する画面(HTML)に対応するビュークラスをセット
     response.setPage(add);
  }


つづく…