学習用WEBフレームワーク作成 その1


概要

EzWeb(仮名)は、「HTML」と「POJO」でWEBアプリ開発を可能にするフレームワークです。
とにかく簡単に、「複雑な知識は一切不要」をコンセプトに開発したフレームワークです。


クラス構成

まず、EzWebの簡単なクラス構成を説明します。
詳細については、簡単なサンプルを元に説明いたしますので、軽く流して読んでください。

1.HTML

画面のデザイン(モックHTMLを利用する事も可能)
HTMLに、7種の専用タグを追記(*1)することにより、動的な画面を作成することが出来ます。
(*1)HTMLに専用タグを記述しても、HTMLをブラウザーで確認する際に、デザインが崩れません。

2.Viewクラス

画面(HTML)の入出力項目を保持するクラス
HTMLタグ&特殊タグの「name属性」と同名のプロパティーを持つクラスです。
ネストした画面は、インナークラスを格納するListを、プロパティーとして持ちます(*1)。
また、入力項目の検証メソッドも、このクラスに記述します。
(*1)画面のネストに制限はありません。

3.Controllerクラス

画面(HTML)の遷移を制御するクラスです。
要求のあった画面(HTML)に対応したControllerクラスが呼び出されます(*1)。
押下された、HTMLのボタン(リンク)の「name属性」と同名のメソッドが呼び出されます。
(*1)Viewクラス:Controllerクラス = n対1

4.定数クラス

画面(HTML)に、表示するラベル(表示項目)のプロパティーキーを定数として管理するクラスです。
プロパティーファイル(*1)で表示項目を管理しない場合、このクラスは不要です。
(*1)キーに対応するプロパティーファイルは、任意に指定可能です。未指定の場合は共通を参照。


サンプル

まず、「足し算」サンプルを見て見ましょう。
機能は単純で2つのテキストボックスに入力された値を加算し、結果を同一画面に表示するサンプルです。


HTMLファイル add.html

<html>
 <head></head>
 <body>
  <form method=”post”>
   <input type=”text” name=”value1”> +
   <input type=”text” name=”value2”> =
   <tg:out name=”total”>合計のサンプル用ダミー値</tg>
   <input type=”submit” name=”execute”>
  </form>
 </body> 
</html>

HTMLをご存知の方は、この可読性の高さが分かって頂けると思います(*1)。
青字の箇所は、EzWebの特殊タグになります。
このタグは、プログラム実行時に「<tg:out>〜</tg>」で囲まれた箇所は、Viewクラスの「totalプロパティー」の値と置き換える「出力項目用タグ」です。


注意:特殊タグ(青字)は、全てマニュアルで記述する必要はありません。
   後述する「HTMLエディター」や「HTML成型plugin」で、自動補完することが可能です。

(*1)これぐらいのシンプルな画面ですと当たり前ですが、複雑な画面でも可読性は変わりません。


Viewクラス Add.java

 public class Add implements Serializable {
   /** add.htmlのテキストボックス「value1」に対応するプロパティー */
   public String value1;
   /** add.htmlのテキストボックス「value2」に対応するプロパティー */
   public String value2;
   /** add.htmlの出力項目「total」に対応するプロパティー */
   public int total;

   /** 入力値検証メソッド */
   public void validate(EzResponse response) {

      // 入力値検証
      if(エラーあり) {
         // EzResponseに表示する画面(HTML)のビュークラスをセットします。
         response.setPage(this);
         // 後続処理を中断し、エラー画面を表示します。
         response.finish();
      }
   }
 }

このクラスは、HTMLのテキストボックス及び出力項目に対応するプロパティーを持つクラスです。
入力値の検証処理(validate)も、このクラスに実装します。


validateメソッド(検証処理)は、フレームワークから呼ばれることはありません。
後述する「Controllerクラス」より、明示的に呼び出す必要があります。
理由は、処理の流れを「Controllerクラス」を参照するだけで、理解できるようにするためです。


但し、検証処理でエラーが発生した場合に、「Controllerクラス」内で、if文の判別を入れるのは、
可読性が下がるため、検証エラーが発生した場合は後続処理を行わせない下記の機能を設けました。

         // EzResponseに表示する画面(HTML)のビュークラスをセットします。
         response.setPage(this);
         // 後続処理を中断し、エラー画面を表示します。
         response.finish();

上記ソースは、検証エラーがあった場合の処理になります。
response(EzResponceクラス)は、クライアントへの返答クラスになります。
responseに、画面(HTML)に対応するViewクラスを設定「response.setPage(this)」することにより、クライアントに表示する画面(HTML)を指定したことになります。
responseのfinishメソッドは、後続処理を中断し、設定された画面(HTML)をクライアントに表示します。



Controllerクラス AddController.java

つづく…
<<