今のところ(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 件のコメント:
コメントを投稿