Web フレームワークを作る!!  3日目

Posted 2011年8月21日 by

お決まりの HelloWorld を作ります

HelloWorldを表示する HTMLファイルの中身は、

<!doctype html>
<HTML>
<HEAD>
<title>Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</HEAD>
<BODY>
<h2>Example</h2>
<div>The current time is <span class="seedo:ews.HelloWorld:tb">now</span>.</div>
</BODY>
</HTML>

spanタグの class=”seedo:ews.HelloWorld:tb” という属性がポイント。

spanタグが、ews.HelloWorld.scala のクラスを生成して置き換わります。

class属性の表記法は、: が区切り文字。

  1. 最初の seedo は、動的ページに置き換わるタグを示します。
    spanタグの中に別のタグがあったとしても、全部置き換えます。
  2. 2番目のews.HelloWorld は動的ページのためのクラス。
    Scala でも、Java でもOK
    クラス名はパッケージ名を含むフルパス。
  3. 3番目のtb は、ews.HelloWorldクラスの実行させる関数。
    この場合は、tb関数。引数はなし。
  4. tb関数に引数を持たせたい場合は、4番目に引数を記述します。
    たとえば、以下のように。class=”seedo:ews.HelloWorld:tb:3.14″

この処理を実装するには、2つの機能が必要になります。

  1. ews.HelloWorldクラスを生成して、tb関数を呼び出すこと
  2. tb関数が生成した文字列を、元のタグと置換すること

ews.HelloWorldクラスの実装は

package ews
import java.util.{HashMap,Date}
import scala.collection.JavaConversions._
/**
 *  A class that's instantiated early and run.  It allows the application
 * to modify Seedo's environment
 */
class HelloWorld {
  var tag:String = null	// Replaced original tag
  def setTag(tg:String): Unit = {tag = tg}
  var parameterMap:HashMap[String,Array[String]] = null	// Parameter from request of servlet
  def setParameterMap(pm:HashMap[String,Array[String]]) : Unit =  {parameterMap = pm}
  // Function without argument
  def tb : String = {
    "HelloWorld " + new Date
  }
  def tb(no:Double) : String = {
    "HelloWorld Double [" + no + "] " + new Date
  }
  def tb(no:String) : String = {
    "HelloWorld String [" + no + "] " + new Date
  }
}

クラスの中には、2つの変数があります。

var tag:String は、置換元となるタグがセットされます。
もし、置換元をHelloWorldクラス側で参照して処理したい場合に使います。

var parameterMap:HashMap[String,Array[String]] は、
Servletのリクエストから渡されてきたパラメータのすべてを参照するためのものです。
これがないと、動的ページを生成する条件やデータが渡せなくなりますから。
型の仕様は、ServletのparameterMapを参照してください。

この変数に対して、setter関数が定義されます。

次に、関数
この例では3つの関数が定義されています。

関数名はともに tb です。返り値はString型。

  1. 1つ目は、引数なしのtb関数
  2. 2つ目は、引数にDouble型を取るもの
  3. 3つ目は、引数にString型を取るもの

HTMLファイルの例では、引数なしのtb関数が呼び出されます。

Post Details

  • Post Title: Web フレームワークを作る!!  3日目
  • Author: admin
  • Filed As: Framework, Scala
  • Tags:
  • You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

コメントを残す