g3では、GETやPOSTに対してHTMLページを返信することで、通常のWebアプリケーション的なUIを構築することができる。
具体例として、3つのWebページを配信するWebアプリケーションUsageをみていこう。
package org.goldenport.g3.app import org.goldenport.g3._ import org.goldenport.g3.messages._ class Usage extends G3Application { html('top, "g3 Getting Started") { <body> <h1>g3 Getting Started</h1> Getting Started. </body> } html('cli, "CLI") { <body> <h1>Command Line Interface</h1> Command Line Interface. </body> } html('web, "Web") { <body> <h1>Web</h1> Using g3 on web browser. </body> } port("/") invoke("top") port("/cli") invoke("cli") port("/web") invoke("web") }
org.goldenport.g3.app.Usageは、ポート「/」、「/cli」、「/web」、チャネル「top」、「cli」、「web」から構成されている。チャネル「top」、「cli」、「web」はいずれもHTMLチャネルで、HTMLページを生成するチャネルである。
htmlチャネルでは、第1引数にチャネル名、第2引数にページタイトル、第3引数にHTMLページに埋め込むHTML断片をXMLリテラルで記述する。HTMLのheader要素などはHTMLチャネルが生成する。
また、ポート「/」、「/cli」、「/web」は、それぞれチャネル「top」、「cli」、「web」を呼び出すようになっている。このため、たとえばポート「/」にアクセスするとチャネル「top」が呼び出され、チャネル「top」が生成したHTMLが返され、最終的にポート「/」の結果としてクライアントに返されることになる。
実行
それでは、org.goldenport.g3.app.Usageを実行してみよう。
Usageは、g3フレームワークに同梱しているので直接実行することができる。まず、Webアプリケーションとして。
Usageは、以下のようにg3.serverスイッチを用いてJettyベースのWebアプリケーションとして実行することができる。
$ g3 -g3.application:org.goldenport.g3.app.Usage -g3.server
トップページにアクセすると以下のようにチャネルtopで指定したWebページが表示される。
「/cli」や「/web」にアクセすると以下のようにそれぞれ、チャネルcli、チャネルwebで指定したWebページが表示される。
コマンドで実行
Usageはコマンドから実行することもできる。
以下のようにg3.serverスイッチを指定せず、引数に「/」を指定することで、ポート「/」をコマンドから実行することができる。実行結果として、HTMLページがコンソールに出力されている。
$ g3 -g3.application:org.goldenport.g3.app.Usage / <html><head><title>g3 Getting Started</title></head><body> <h1>g3 Getting Started</h1> Getting Started. </body></html>
ポート「/cli」、「/web」に対する実行結果は以下の通りとなる。
$ g3 -g3.application:org.goldenport.g3.app.Usage /cli <html><head><title>CLI</title></head><body> <h1>Command Line Interface</h1> Command Line Interface. </body></html>
$ g3 -g3.application:org.goldenport.g3.app.Usage /web <html><head><title>Web</title></head><body> <h1>Web</h1> Using g3 on web browser. </body></html>
0 件のコメント:
コメントを投稿