HelloWorld.sdoc
package org.goldenport.g3.app
import org.goldenport.g3._
import org.goldenport.g3.messages._
class HelloWorld extends G3Application {
port("/") agent {
case _ => "Hello World"
}
}
このような目的には、様々な情報を埋め込んでレイアウトしたHTMLを出力するためのチャネルであるhtmlチャネルを使用する。
g3アプリケーションHelloWeb.scalaでは、htmlチャネルを用いてHTMLページを定義している。
portチャネル「/」が呼び出されると、つまりWebのパス「/」が呼び出されるとinvokeエージェント経由でhtmlチャネル「hello」が呼び出され、htmlチャネル「hello」が生成したHTMLが返され、最終的にクライアントに返される。
htmlチャネルでは、ScalaのXMLリテラルを使用してHTML文書を直接記述する。また、HTMLのhead要素はhtmlチャネル側で生成するのでbody要素のみを定義すればよい。
HelloWeb.scala
package org.goldenport.g3.app
import org.goldenport.g3._
import org.goldenport.g3.messages._
class HelloWeb extends G3Application {
html('hello, "Hello") {
<body>
<h1>Hello</h1>
Hello World!
</body>
}
port("/") invoke("hello")
}
実行
それでは、org.goldenport.g3.app.HelloWebを実行してみよう。HelloWebは、g3フレームワークに同梱しているので直接実行することができる。
g3.serverスイッチを用いてJettyベースのWebアプリケーションとして実行することができる。$ g3 -g3.application:org.goldenport.g3.app.HelloWeb -g3.server
トップページにアクセすると以下のようにチャネルhelloで定義したWebページが表示される。


0 件のコメント:
コメントを投稿