今回の内容は、その際の開発環境セットアップの備忘録となります。
開発環境
それぞれ現時点での最新版を使います。
- Eclipse Classic 4.2.1 Mac OS X 64bit
- Slim3 1.0.16
- Velocity 1.6.2 + Velocity Tools 2.0
Slim3インストール
基本的にここを参考にEclipseにGoogle PluginとSlim3 Pluginをインストールします。ダウンロード先のURLがEclipseのバージョンに一致しているか確認します。今回は以下を使います。
https://dl.google.com/eclipse/plugin/4.2
http://slim3.googlecode.com/svn/updates/
Pluginのインストールが終わったら、Blankプロジェクトを作成します。Explorerで右クリック -> New -> Others -> Slim3と進めばOKです。上記Wikiに書いてあることのうち、workspaceの設定以外はPluginが勝手にやってくれます。
Velocityインストール
こちらを参考にさせて頂きました。が、いくつか補足。
まずは、http://velocity.apache.org/download.cgiからVelocity Toolsをダウンロード、解凍します。lib内にあるvelocity-1.6.2.jarとvelocity-tools-2.0.jar、それから依存関係のあるcommonsライブラリをコピーして、
先ほど作成したBlankプロジェクトのWEB-INF/lib/にペーストし、ビルドパスに追加します。
次に、src以下にVelocityViewServletを拡張したクラスを作成します。ひとまず以下のように実装しておけばOKです。
package test.hoge; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.velocity.Template; import org.apache.velocity.app.Velocity; import org.apache.velocity.context.Context; import org.apache.velocity.tools.view.VelocityViewServlet; public class VelocityServlet extends VelocityViewServlet { private static final long serialVersionUID = 1L; @Override protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) { String uri = request.getRequestURI(); String templatePath = getTemplatePath(uri); Enumeration attrNames = request.getAttributeNames(); while(attrNames.hasMoreElements()) { String key = (String) attrNames.nextElement(); ctx.put(key, request.getAttribute(key)); } Template template; try { template = Velocity.getTemplate(templatePath, "UTF-8"); } catch (Exception e) { throw new RuntimeException(e); } return template; } protected String getTemplatePath(String uri) { return "/WEB-INF/template" + uri; } }
作成したら、このサーブレットを使用するようにweb.xmlに設定を追加します。
<servlet> <servlet-name>VelocityServlet</servlet-name> <servlet-class>test.hoge.VelocityServlet</servlet-class> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/velocity-tools.xml</param-value> </init-param> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping> <servlet-name>VelocityServlet</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping>
これで、拡張子が.vmのものはVelocityServletを使用するようになります。velocity-tools.xmlとvelocity.propertiesはとりあえず空でいいので作成しておきます。
次に、appengine-web.xmlに以下を追加します。ついでにセッションは有効にしておきましょう。
次に、appengine-web.xmlに以下を追加します。ついでにセッションは有効にしておきましょう。
<sessions-enabled>true</sessions-enabled> <threadsafe>true</threadsafe> <static-files> <include path="**.js" /> <include path="**.css" /> <include path="**.png" /> <include path="**.jpg" /> <include path="**.jpeg" /> <include path="**.swf" /> <include path="**.gif" /> <include path="**.ico" /> <include path="**.html" /> </static-files> <resource-files> <include path="**.jsp" /> <include path="**.vm" /> </resource-files>
Controller + .vmファイル作成
ここまで来たら、Antのgen-controller-without-viewでSlim3のControllerを作成します。JSPファイルの代わりに手動で.vmファイルをWEB-INF/template/に作成しましょう。.vmファイルの置き場所は拡張VelocityServletに書いてあるので、WEB-INF/の好きな場所に変えてしまってOKです。Controllerと.vmの準備が出来たら、ローカル環境でサーバを起動してブラウザでアクセスできるか確認します。
ちなみに、Slim3 + Velocityの処理の流れは大まかに以下のようになっています。
- Controller#run()が呼ばれる
- **.vmにforward
- forwardで指定された拡張子が.vmなのでVelocityServletが起動
- pathで指定された.vmファイルがレンダリングされる
0 件のコメント:
コメントを投稿