Apache Slingを動かしてみた2

Apache SlingのDiscover Sling in 15 minutes – the Sling Launchpad 前回の Apache Slingを動かしてみたの続き

Render your content using server-side javascript (ESP)

前回用意したcurlで次のコマンドを実行する。

curl -X MKCOL -u admin:admin http://localhost:8080/apps/foo
curl -X MKCOL -u admin:admin http://localhost:8080/apps/foo/bar
  • -X MKCOL でコレクションの作成。 Jackrabbitで言うノード、Windowsで言うフォルダの作成みたいなもの。 appsの下にfooを作って、さらにその下にbarというコレクションを作っている。
  • -u でユーザー名:パスワード を指定

カレントディレクトリ(C:\work)にhtml.esp という名前で次の内容のファイルを作成しておく。

<html>
  <body>
    <h1><%= currentNode.title %></h1>
  </body>
</html>

.espは Embedded Server Pages というもので、 HTMLに埋め込まれたスクリプトがサーバーサイドで処理されてクライアントに送られる。(Server Pages)

ファイルを作成したら次のコマンドでapps/foo/bar以下にアップロードする。

curl -u admin:admin -T html.esp http://localhost:8080/apps/foo/bar/html.esp

以下のURLにアクセスすると http://localhost:8080/content/mynode.html some title と表示される。

ちなみにhtml.espをアップロードするまえにhttp://localhost:8080/content/mynode.html へアクセスするとダンプ画面。

Resource Propertiesのtitle:”some title”がheader.espで処理されて表示されるのだね。titleは特に指定はしていないのでデフォルトでこの値になるのだろう。

Additional examples

Let Sling generate the path of a newly created node. 次の例はblogノードを作って、タイトルをつけている。

curl -X POST -u admin:admin "http://localhost:8080/content/blog"
curl -D - -u admin:admin -F"title=Adventures with Sling" "http://localhost:8080/content/blog/"

新しいノードを追加すると勝手にユニークな名前をつけてくれる。 curlの-Dオプションで以下のようなheaderもdumpも出力される。

HTTP/1.1 100 Continue

HTTP/1.1 201 Created
Location: /blog/adventures_with_slin
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Server: Jetty(6.1.x)

Locationにあるとおり、adventures_with_slinという20文字の名前がついている。 http://localhost:8080/blog/adventures_with_slin.html

Add a page header with sling.include

あとは同じ要領でespとcurlを駆使してノードを追加したりファイルをアップロードしたりしている。 こうしてパーツを組み合わせていけば、ページのデザインが出来ていく。 それに上の新しいノード追加の例を組み合わせれば、簡易的なブログサービスが出来上がってしまう。 詳しくは

46 Line Blogを参照。 コンテンツを出し入れする仕組みはほぼ整っているので、入れ物(コンテンツリポジトリ)を決めるのととViewに専念すればよい。

Be the first to comment

Leave a Reply

Your email address will not be published.