Index: [Article Count Order] [Thread]

Date: Sat, 21 Sep 2002 22:03:39 +0900 (JST)
From: GOTOU Yuuzou <gotoyuzo@notwork.org>
Subject: [webrickja:63] Re: サーブレットの引数
To: webrickja@notwork.org
Message-Id: <20020921.220339.123560668.gotoyuzo@kotetsu.does.notwork.org>
In-Reply-To: <20020921105707.74371.qmail@web301.mail.yahoo.co.jp>
References: <200209210616.g8L6G4ND033274@miso.k.notwork.org>	<20020921105707.74371.qmail@web301.mail.yahoo.co.jp>
X-Mail-Count: 00063

In message <20020921105707.74371.qmail@web301.mail.yahoo.co.jp>,
 `Takeshi Honda <moecho21@yahoo.co.jp>' wrote:
> > 同じである以上は同じ動作をするんじゃないかというのはともかく、
> > 具体的にどう違う動作をさせたいのでしょうか?
> 
> 設定ファイルをサーブレットとは別に外だしして、
> URLによって違う設定ファイルを読み込ませて、
> その設定ファイルに従った動作をする、
> というのを考えています。

HTTPServer#mount の3番目以降の引数は、サーブレットを初期化する
際に呼ばれる get_instance というメソッドに渡されます。

HTTPServlet#AbstractServlet を継承する場合は、get_instance は
new と同じなので、initialize を適当にオーバーライドすることで
引数を調整することができます。

require 'webrick'
include WEBrick

class ArgTest < HTTPServlet::AbstractServlet
  def initialize(server, arg1, arg2, arg3)
    super
    @arg1, @arg2, @arg3 = arg1, arg2, arg3
  end

  def do_GET(req, res)
    res['content-type'] = "text/plain"
    res.body = ""
    res.body << "arg1 = #@arg1\n"
    res.body << "arg2 = #@arg2\n"
    res.body << "arg3 = #@arg3\n"
  end
end

s=HTTPServer.new( :Port => 8808 )
s.mount("/test1", ArgTest, 1, 2, 3)
s.mount("/test2", ArgTest, 100, 200, 300)
trap("INT"){ s.shutdown }
s.start

-- 
ごとうゆうぞう