Slim3 Getting Started のおさらい

Slim3 Getting Started やってみました
に続いて何かやろうかなと思ったら、大まかな手順を忘れてしまったので(苦笑)、手順をおさらい。
自分で思い出すための雑メモ。Getting Started (Slim3)で手を動かしておくこと。

関連エントリ

GAE/J + Slim3 - リンク集

ルートパッケージの設定

  • war/WEB-INF/web.xmlslim3.rootPackageをいじる。以降[pkg]
<context-param>
    <param-name>slim3.rootPackage</param-name>
    <param-value>morningmist7</param-value>
</context-param>

コントローラーの作成(参照系)

  1. build.xml -> gen-controller -> パス[path]の入力(例:"/twitter/")
  2. ソースが自動生成される
    1. src/[pkg]/controller/[path]/IndexController.java
    2. test/[pkg]/controller/[path]/IndexControllerTest.java
  3. ビュー(参照系)が自動生成される
    1. war/[path]/index.jsp

コントローラーの作成(更新系。ビュー無し)

  1. build.xml -> gen-controller-without-view -> パス[path]/アクション[action]の入力(例:"/twitter/tweet")
  2. ソースが自動生成される
    1. src/[pkg].controller.[path].[action]Controller
    2. test/[pkg].controller.[path].[action]ControllerTest

モデルの作成

  1. build.xml -> gen-model -> モデル[model]の入力(例:"Tweet")
  2. ソースが自動生成される
    1. src/[pkg].model.[model]
    2. test/[pkg].model.[model]Test
  3. アプリケーションに必要なプロパティを書く

サービスの作成(更新系)

  1. build.xml -> gen-service -> サービスクラス名[service]の入力(例:"TwitterService")
  2. ソースが自動生成される
    1. src/[pkg].service.[service]
    2. test/[pkg].service.[service]Test

サービス(更新系)を書く

  1. サービスメソッドを書く
public Tweet tweet(Map<String, Object> input) {
    Tweet tweet = new Tweet();
    BeanUtil.copy(input, tweet);
    Transaction tx = Datastore.beginTransaction();
    Datastore.put(tweet);
    Datastore.commit(tx);
    return tweet;
}

コントローラー(更新系)からサービスを呼び出す

public class TweetController extends Controller {

    private TwitterService service = new TwitterService();
   
    @Override
    public Navigation run() {
        service.tweet(new RequestMap(request));
        return redirect(basePath);
    }
}

ビュー(参照系)を書く

<c:forEach var="e" items="${tweetList}">
${f:h(e.content)}
<hr />
</c:forEach>

コントローラー(参照系)を書く

public class IndexController extends Controller {

    private TwitterService service = new TwitterService();

    @Override
    public Navigation run() {
        List<Tweet> tweetList = service.getTweetList();
        requestScope("tweetList", tweetList);
        return forward("index.jsp");
    }
}

サービス(参照系)を書く

  1. サービスメソッドを書く
public class TwitterService {

    private TweetMeta t = new TweetMeta();

    // ...

    public List<Tweet> getTweetList() {
        return Datastore.query(t).sort(t.createdDate.desc).asList();
    }
}