TOP設計・移行・活用> MVCの構成
SledgeによるWebアプリケーションフレームワーク入門
SledgeによるWebアプリケーションフレームワーク入門

第6回:さらなる活用のために
著者:ライブドア  池邉 智洋   2005/7/28
前のページ  1  2  3   4  次のページ
MVCの構成

   StrutsはMVCが以下のように構成されています。
  • Model - Actionクラス
  • Controller - ActionServlet、struts-config.xmlというURIマッピング用XML
  • View - JSP、taglib

   一方SledgeではPagesクラスがControllerであり、Modelの役割も行なうような構造になっています。場合によってはロジックとページ制御が混在してしまい、理想的ではない構造になってしまいますが、ちょっとしたサイトの制作であれば、クラス数の増加をおさえられる効能もあります。


国際化

   Strutsは最初から国際化が考慮されているため、国際化されたアプリケーションの開発が比較的容易です。

   Sledgeでは完全に国際化されたアプリケーションの開発はあまり得意ではありません。デフォルトのcharsetがeuc-jpになっているのは日本独自の仕様であり、あまり美しくないです。


XMLの利用

   Strutsは設定ファイルがXML化されていますが、Sledgeはデフォルトだと設定ファイルがPerlスクリプトで書かれており単純です。


Sledge TIPS

   公式なドキュメントではあまり触れられていませんが、Sledgeをより活用して効率よくコードを書くために覚えていると便利なTIPS的なコードを紹介します。


HTML以外のコンテンツの出力

   Sledgeは基本的にテンプレートエンジンを利用する事が前提となっているため、画像等をアプリケーションから出力しようとする場合、少し工夫が必要になってきます。Pagesクラスのfinishedアトリビュートに真の値を渡さない限り、テンプレートエンジンの動作を停止する事ができないので、以下のようにします。

package ThinkIT::Pages::Hook;

use strict;
use Sledge::Pages::Compat;

sub dispatch_image {
    my $self = shift;
    my $image = $self->load_image; # 画像データのロード
    # 自前で Request オブジェクトを操作し、出力を行なう。
    $self->r->content_type('image/jpeg');
    $self->r->header_out('Content-Length' => length($image));
    $self->r->send_http_header;
    $self->r->print($image);
    $self->finished(1); # この後の動作をキャンセルする。
}
前のページ  1  2  3   4  次のページ


株式会社ライブドア 池邉 智洋
著者プロフィール
株式会社ライブドア  池邉 智洋
ネットサービス事業本部 システムグループ マネージャー。2001年10月よりライブドア(当時オン・ザ・エッヂ)にて受託開発業務のWebアプリケーション開発に従事。2003年11月よりlivedoorのポータル化にたずさわり、各種サービスの開発を行う。個人的にCPANモジュールやApacheモジュールの公開も行っている。


INDEX
第6回:さらなる活用のために
  はじめに
  Sledgeのライフサイクル
MVCの構成
  フック機能の利用