今のところ(2011/11/28現在)あまり知名度がなく、日本語の記事など一切存在していないので
今後の参考にメモ。
lime-mvc - http://code.google.com/p/lime-mvc/
lime-mvcとは
Google Guiceを拡張して作られたMVCパターンのフレームワーク。セットアップ
lime-mvcはMavenリポジトリから利用可能になっているのでpom.xmlに下記を追加するだけ。<dependency> <groupId>org.zdevra</groupId> <artifactId>lime-velocity</artifactId> <version>0.2.0.rc2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <!-- ViewとしてJSPを使う場合は必要 --> <!-- Velocity等を使用する場合は不要 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>provided</scope> </dependency>
lime-mvcを使用する場合、MvcModuleのconfigureControllersをオーバーライドして
URLパターンとコントローラーのマッピングを行う。
これはアプリケーション起動時に呼ぶ必要があるため、GuiceServletContextListenerを継承して
デプロイメントディスクリプタ(web.xml)にリスナーとして登録する必要がある。
public class WebAppContextListener extends GuiceServletContextListener { @Override protected Injector getInjector() { return Guice.createInjector(new MvcModule() { @Override protected void configureControllers() { // URLパターンとコントローラーのマッピングを行う control("/samples/*").withController(WebAppController.class); } }); } }
Guiceは上記リスナーでマッピングしたデータをGuiceFilterでキャッチしてDispatchするので
ここではすべてのリクエストに対してGuiceFilterを通す設定をweb.xmlに記述する。
<filter> <filter-name>guiceFilter</filter-name> <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> </filter> <filter-mapping> <filter-name>guiceFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>jp.u1aryz.products.samples.lime.listener.WebAppContextListener </listener-class> </listener>
/helloworld/(.*)というパスに対してリクエストがあった場合にdoActionメソッドを呼び出し
main.jspに転送する場合のコントローラーは下記の通りとなる。
メソッドの戻り値をデータとしてビューに渡すことが出来る。
@Controller public class WebAppController { @Path("/helloworld/(.*)") @ModelName("msg") @ToView("main.jsp") public String doAction(@UriParameter(1) String name) { return "Hello World " + name + "!"; } }
coreタグライブラリでModelNameアノテーションより指定された変数名で出力することにより、
JSPで表示することが出来る。
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <html> <head> </head> <body> <c:out value="${msg}" /> </body> </html>
コンテキストパスが"/"の場合はhttp://localhost:8080/samples/helloworld/hogeでアクセスすれば
下記のように出力されるはず。
Hello World hoge!
ほかにもlime-mvcはビューとしてJSilverやVelocity、Freemarkerを使えるので
Velocity使いとしてはありがたや〜。
0 件のコメント:
コメントを投稿