KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

Google App Engine 第七回


Slim3とは

Slim3とはGoogle App Engine/Javaに最適化されたフルスタックMVCフレームワークです。

Slim3を使ったページの作成方法1

コントローラの作成

1. build.xmlを右クリック > Run As > 2. Ant Build を選択し、
Ant Input Request [Input a controller path] popup window を開いてください。

misawa01

2. コントローラのパスを入力します。
今回は[/memo/]と入力してください。
最後のスラッシュが大事なポイントです。
[/memo/]は[/memo/index]の短縮形で、上記コマンドを入力することで、
[{package}/controller/memo/IndexController.java, {package}/controller/memo/IndexControllerTest.java, war/memo/index.jsp]が自動生成されます。

misawa02

3. {package}/controller/memo/IndexController.java, {package}/controller/memo/IndexController.java, war/memo/index.jspが生成されました。

misawa03

コントローラの内容確認

1. {package}/controller/memo/IndexContorller.java
[/memo/]が開かれると、[biz.e_zero.slim3_test.controller.memo.IndexController#run()]が実行されます。
runの戻り値は遷移先のパスです。

package biz.e_zero.slim3_test.controller.memo;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

public class IndexController extends Controller {

    @Override
    public Navigation run() throws Exception {
        return forward("index.jsp");
    }
}

2. {package}/controller/memo/IndexControllerTest.java

IndexController.javaのテストケース(JUnit)です。
Controllerの変更に合わせてテストケースの変更を行ってください。
テストケースを右クリック => Run As => JUnit Test を選択して、テストを実行してください。

misawa04

package biz.e_zero.slim3_test.controller.memo;

import org.slim3.tester.ControllerTestCase;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

public class IndexControllerTest extends ControllerTestCase {

    @Test
    public void run() throws Exception {
        tester.start("/memo/");
        IndexController controller = tester.getController();
        assertThat(controller, is(notNullValue()));
        assertThat(tester.isRedirect(), is(false));
        assertThat(tester.getDestinationPath(), is("/memo/index.jsp"));
    }
}

3. war/memo/index.jsp

<%@page pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@taglib prefix="f" uri="http://www.slim3.org/functions"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>memo Index</title>
</head>
<body>
<p>Hello memo Index !!!</p>
</body>
</html>

動作確認

プロジェクトトップを選択して、右クリック => Debug As => Web Applicationを選択して、GAEサーバを起動してください。

起動ログ

8 05, 2015 2:12:28 午前 com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
情報: Successfully processed C:\Users\Shinichi\Documents\ws-test\slim3_test\war\WEB-INF/appengine-web.xml
8 05, 2015 2:12:28 午前 com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
情報: Successfully processed C:\Users\Shinichi\Documents\ws-test\slim3_test\war\WEB-INF/web.xml
8 05, 2015 2:12:28 午前 com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
情報: Overwriting system property key 'java.util.logging.config.file', value 'C:\WinApp\Development\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.22\appengine-java-sdk-1.9.22\config\sdk\logging.properties' with value 'WEB-INF/classes/logging.properties' from 'C:\Users\Shinichi\Documents\ws-test\slim3_test\war\WEB-INF\appengine-web.xml'
8 05, 2015 2:12:28 午前 com.google.apphosting.utils.jetty.JettyLogger info
情報: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
8 05, 2015 2:12:29 午前 com.google.apphosting.utils.jetty.JettyLogger info
情報: jetty-6.1.x
Slim3 HOT reloading:true
8 05, 2015 2:12:30 午前 com.google.apphosting.utils.jetty.JettyLogger info
情報: Started SelectChannelConnector@127.0.0.1:8888
8 05, 2015 2:12:30 午前 com.google.appengine.tools.development.AbstractModule startup
情報: Module instance default is running at http://localhost:8888/
8 05, 2015 2:12:30 午前 com.google.appengine.tools.development.AbstractModule startup
情報: The admin console is running at http://localhost:8888/_ah/admin
8 05, 2015 2:12:30 午前 com.google.appengine.tools.development.DevAppServerImpl doStart
情報: Dev App Server is now running

[http://localhost:8888/memo/]にアクセスし、”Hello memo Index !!!”のメッセージが表示されれば正常に動作しています。

次回は「Slim3を使ったページの作成方法2」をご紹介します。

【関連記事】
Google App Engine 第一回
Google App Engine 第二回
Javaのライブラリを手軽にテストしたい!! Groovy入門 第1回
Google App Engine 第三回
Google App Engine 第四回
Google App Engine 第五回
Google App Engine 第六回