学習用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対14.定数クラス
画面(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
つづく…
<<