Servletベースのフレームワーク(β版)完成

| コメント(0) | トラックバック(0)

先日より取り組んでいた、Servletベースのフレームワークの β版 が完成しました。
DIコンテナに思いっきり依存しているので、現状ではSeasar2を使う必要があります。
ただし、SpringFramework上で動作させるのもそんなに難しくなさそう。

作成するServletはPOJOで作成できて、かつ、充分な記述力のなかった url-pattern を、正規表現で指定できるようになりました。
このあたりは S2Struts や S2JSF の実装を参考にしているので、S2プロダクト群に慣れている人にはとっつきやすいと思います。

ビューへのフォワードなどの設定は Tigerアノテーションを使うようにしたので、ソース書きながらサクサク設定も組み込んでいけます。
このアノテーション作法はS2Strutsのほぼパクりになってますが。。。w

HogeServlet.java

@Servlet( urlPattern = "/hoge\\.html", parameter = "Command" )
public interface HogeServlet {
    
    @ServletForward( path = "/WEB-INF/jsp/hoge.jsp" )
    public String HOGE = "hoge";
    
    @ServletForward( path = "hoge.html", redirect = true )
    public String POSTED = "posted";
    
    public String doGet();
    
    public String doPostMessage();
    
}

HogeServletImpl.java

public class HogeServletImpl implements HogeServlet {
    
    private HogeService hogeService;
    
    public int getHogeService() {
        return hogeService;
    }
    
    public void setHogeService(HogeService hogeService) {
        this.hogeService = hogeService;
    }
    
    private HogeDto hogeDto;
    
    public int getHogeDto() {
        return hogeDto;
    }
    
    public void setHogeDto(HogeDto hogeDto) {
        this.hogeDto = hogeDto;
    }
    
    private List<Message> messages;
    
    public String getMessages() {
        return messages;
    }
    
    public String doGet() {
        messages = hogeService.getMessages();
        return HogeServlet.HOGE;
    }
    
    public String doPostMessage() {
        hogeService.doSomething();
        return HogeServlet.POSTED;
    }
    
}

こんな感じですね。

ServiceはDIコンテナからのインジェクション、Dtoはフォームデータをセット、messagesはこのサーブレットでの処理が終わったら自動的にrequestの属性として抽出される(JSFちっく)という仕様です。
また、@Servletアノテーションで指定してある parameter値 の名前を持つフォームを見て、実行するメソッドが変わります。
上記の例では、doPostMessageを実行するには、Command=messageをPOSTする、といった感じです。
指定がなければ、doGet()かdoPost()が実行されることになります。

また、ご覧の通り完全なPOJOなので、テストも容易に実行できることになります。

まだβ版なのでこれからリファクタリングして、もう少し盛り込みたい機能があるのでそちらも実装、納得がいくレベルになったらリリースしようと思います。

トラックバック(0)

トラックバックURL: http://happy-camper.st/mt/mt-tb.cgi/269

コメントする

2012年1月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

月別 アーカイブ

CLOCK

あわせて読みたい

あわせて読みたい

ブログ通信簿

Yahoo!天気情報

AdSense

フィードメーター

RSS feed meter for http://ueshin.happy-camper.st/

トラックフィード

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 4.2-ja