SOAフレームワークBeehiveに挑戦(3) 2/4
PollinateでNetUI Page Flowプログラミング
www.netpotlet.com
原田洋子
2005/7/1
まずはシンプルなプログラムから始めましょう。最初にトライするのはログインフォームで図4に示すように動きます。最近ログインのための認証をしたかどうかのチェックから始めますが、認証された状態になっていなければフォームを表示します。フォームのページはJSPで作ります。認証された状態になっていればログインフォームを表示せずに日記ページへ遷移します。
ログインページのフォームに入力されたパラメータをポストする先には、コントローラの注釈とメソッドの組になっているアクションを指定します。メソッドを実行した結果、認証できたと判断されれば日記ページへ、認証されなかった場合は再びログインページへ戻ります。また、後に詳細を説明しますが、ログインページには登録ページへのリンクもあります。
図4 ログインの処理 |
Beehiveのプログラミングはコントローラから始めます。コントローラというのはControllerクラスで、Pollinateを使わずにApache Beehiveを利用する場合は、拡張子を.jpfにしてController.jpfファイルを作ります。しかし、前回の記事で説明したようにPollinateプラグインを利用する場合、拡張子を.javaにしないと問題が起きるので、ここではController.javaファイルを作ります。ただし、Eclipse上の操作は通常のJavaのクラスを作るのと同じですから拡張子の指定は行いません。
コントローラはJSPファイルがあるディレクトリに1つが基本です。通常のクラスのようにWEB-INF/src以下にパッケージを作って、クラスを作ってといったことはせず、JSPファイルを置くWebContentディレクトリ以下に作ります。ディレクトリ階層がパッケージと同等の扱いになります。
ログインページのJSPはeaves Webアプリケーションのトップディレクトリに置きますので、eaves/WebContentフォルダにControllerクラスを次のようにして作ります。
Project Explorer eavesプロジェクト(図2)のWebContent選択
→ 右クリック → 新規 → クラス
(クラス作成ウィンドウ、図5)名前(M)にControllerと入力
→(スーパークラス(S)の右にあるボタン)参照
→(サブウィンドウ、図6)PageFlowControllerと入力 → OK
→(クラス作成ウィンドウ)終了
図5 クラス作成ウィンドウ(画像をクリックすると拡大します) |
図6 スーパークラスの指定 |
クラスが作られると自動的にデフォルトパッケージが作られ、その下にControllerクラスが置かれます。
Controllerのプログラミングで最初に行っておくのは
- @Jpf.Controller注釈をクラス定義に追加する
- Forward型を返すbegin()メソッドを定義するか、@Jpf.SimpleAction注釈でbeginアクションに対応するページを指定する
の2点です。1つ目はControllerクラスが、Beehiveのコントローラとして振る舞うという意味があります。2つ目は動作のきっかけとなるbeginアクションに対応する振る舞いを指定する意味があります。最初のページが表示される前に何かを実行したい場合はbegin()メソッドに、何も実行しないで最初のページを表示する場合は@Jpf.SimpleAction注釈にします。
さらに、Controllerクラスでは次の定義を行います。
- フォームの各パラメータをプロパティに持つJavaBeansを定義する
- フォームのポスト先となるメソッドを定義する
1〜4の定義を行うと、図4に示したログイン制御のControllerはリスト3のようになります。このときリスト3のフローは図7のようになりました。図7にあるように、すべてはbeginという名前のアクションで始まり、ここでauthorizedと判断されると日記ページmydiary/index.jsp 注2 を表示し、not_authorizedと判断されるとlogin.jspを表示します。次にlogin.jspのフォームはprocessLoginという名前のアクションにポストしますが、ここでlogin_successと判断されれば日記ページmydiary/index.jspを表示し、login_failureと判断されれば再び、login.jspを表示します。
注2 PollinateプラグインのController Flow描画機能はディレクトリ階層に対応していません。本来はmydiary/index.jspとなるべきところですが、単にindex.jspとファイル名だけが表示されています。 |
さて、図7のフロー図とリスト3の注釈を見比べてください。12〜17行目が18行目から定義されているbegin()メソッドの注釈です。フロー図には注釈とForward型を返すメソッドの組み合わせがアクションで表現されています。begin()メソッドの注釈ではauthorized、not_authorizedそれぞれの場合に表示するmydiary/index.jsp、login.jspを指定しています。begin()メソッドではセッションにusernameという名前に関連付けられた値があるかどうかをチェックして、認証済みかどうかの判断を行っています。
フロー図のもう1つのアクションprocessLoginはリスト3のprocessLogin()メソッドとその注釈で、フォームのポスト先として使います。注釈ではlogin_successとlogin_failureそれぞれの場合に表示するJSPをmydiary.jsp、login.jspを指定しています。processLogin()メソッドではパスワードの長さが6文字以上、ユーザー名の最初の1文字で始まって最後の1文字で終わっている(例:ユーザー名:abcd、パスワード:abccccccd)場合にログインに成功したと判断するようにしました。意味のある認証ではありませんが、動作テストとしては十分でしょう。
リスト3の70〜88行目のLoginFormクラスは、フォームの各パラメータをプロパティに持つJavaBeansの定義です。ポストされたときに自動的にプロパティに値がセットされます。
図7 リスト3のフロー図(画面をクリックすると拡大します) |
1 import java.io.Serializable; |
リスト3 WebContentディレクトリのController.java |
(次ページへ続く)
2/4 |
Index | |
SOAフレームワークBeehiveに挑戦(3) PollinateでNetUI Page Flowプログラミング |
|
Page
1 ・NetUI Page Flowの概要 ・プログラミング環境 ・プログラミングのためのドキュメント |
|
Page 2 ・シンプルなプログラム −コントローラのプログラミング |
|
Page 3 −JSPページのプログラミング −サーバのセットアップと実行 |
|
Page 4 ・データ表示方法とバリデーション ・まとめ&サンプルコードのダウンロード |
「SOAフレームワークBeehiveに挑戦」 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|