My favorites | Sign in
t-2
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
ProgrammingModel  

en , ja
Updated Mar 24, 2011 by shinpei.ohtani@gmail.com

T2を使ったアプリケーションの開発における基本的なプログラミングモデルの説明です.

T2のプログラミングモデル

T2のプログラミングモデルのポイントは以下の2点です.

  • Pageモデル
  • Viewの実装が変わっても、同じようなPageクラスの作り方を提供する
  • 引数インジェクトモデル

Pageモデル

T2を使った際にユーザが作るクラスはPageクラスです. Pageクラスは単なるPOJOにT2用のアノテーションをつけただけのクラスで、1URLに対して1つのPageクラスが対応します. このシンプルな関係がT2の根幹を支えるPageモデルです.
旧来のWebフレームワークでは、ビューの実装が変わるとサーバサイドのプログラミングモデルが変わる場合が多々ありました. 例えばビューがjspでStrutsを使っていたが、ビューをFlexに変更した途端にBlazeDSを使う、などのケースです. このような場合、ビューの変更がそのままサーバサイドのアプリケーションの作り方自体に影響を及ぼしています. しかし、それももう終わりです.本来ビューの実装技術がサーバサイドの作り方に影響を及ぼしてはいけないのです. T2を使うと、このような事態を防ぎ、たとえビューの実装技術が変更しても同じようなPageモデルを提供します.

引数インジェクトモデル

T2のPageクラスではメソッドの引数によって、必要なオブジェクトをインジェクトしてもらいます. 型や引数アノテーションで適切な物であればT2が設定(インジェクト)してくれます.
例えば、HttpServletRequestが必要であれば、シンプルに引数に定義すると、T2が対象メソッドが実行されるときに インジェクトしてくれます(インジェクト可能なオブジェクトの一覧は、以下のインジェクト可能なオブジェクト一覧を参照). そのメソッドで必要なクラスを並べればよいだけです.これがT2の引数インジェクトです.

インジェクト可能なオブジェクト一覧

T2で引数にインジェクト可能なオブジェクトの一覧です.

大きく分けて、アノテーションなしで型のみでインジェクトできるタイプと、明示的に引数アノテーションを付与してインジェクトするタイプとがあります.

  • アノテーションなしでインジェクト可能なオブジェクト
    1. HttpServletRequest
    2. HttpServletResponse
    3. HttpSession
    4. ServletContext
    5. T2のWebContext
    6. T2のRequest(HttpServletRequestのラッパー)
    7. T2のResponse(HttpServletResponseのラッパー)
    8. Application(ServletContextのラッパー)
    9. リクエストヘッダ
    10. Cookie/Cookie
    11. アップロードファイル(UploadFile)
    12. フォームデータの型変換エラーを集約したErrorInfo

  • アノテーション指定でインジェクト可能なオブジェクト(括弧内が使用するアノテーション)
    1. リクエストパラメータ(@RequestParam)
    2. セッションパラメータ(@SessionAttr)
    3. URLの一部分(@Var)
    4. サブミットされたフォームデータ(@Form)
    5. 繰り返し項目のindex値(@Index)
    6. AMFの変換オブジェクト(@Amfをメソッドにつける)

TOPに戻る

Powered by Google Project Hosting