Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > webrick/httpservlet/filehandlerライブラリ > WEBrick::HTTPServlet::DefaultFileHandlerクラス

class WEBrick::HTTPServlet::DefaultFileHandler + WEBrick::HTTPServlet::AbstractServlet

クラスの継承リスト: WEBrick::HTTPServlet::DefaultFileHandler < WEBrick::HTTPServlet::AbstractServlet < Object < Kernel < BasicObject

要約

通常のファイルサーバとしての機能を提供するためのサーブレットです。 WEBrick::HTTPServlet::FileHandler の内部で利用しています。

特異メソッド

get_instance(server, *options) -> WEBrick::HTTPServlet::AbstractServlet

new(server, *options) を呼び出してサーブレットを生成して返します。 WEBrick::HTTPServer オブジェクトは実際にはこの get_instance メソッドを呼び出して サーブレットを生成します。

特に理由が無い限り AbstractServlet のサブクラスがこのメソッドを再定義する必要はありません。

[PARAM] server:
WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。
[PARAM] options:
WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。
new(server, local_path) -> WEBrick::HTTPServlet::DefaultFileHandler

DefaultFileHandler サーブレットを生成します。ユーザが直接使うことはあま りありません。

[PARAM] server:
WEBrick::GenericServer のサブクラスのインスタンスを 指定します。
[PARAM] local_path:
処理するファイルのパスを指定します。
new(server, *options) -> WEBrick::HTTPServlet::AbstractServlet

サーブレットを生成して返します。 WEBrick::HTTPServer オブジェクトは server に自身を指定してサーブレットを生成します。

[PARAM] server:
サーブレットを生成する WEBrick::HTTPServer オブジェクトを指定します。
[PARAM] options:
WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。

インスタンスメソッド

do_GET(request, response) -> ()
do_HEAD(request, response) -> ()
do_POST(request, response) -> ()
do_PUT(request, response) -> ()
do_DELETE(request, response) -> ()
do_OPTIONS(request, response) -> ()

自身の service メソッドから HTTP のリクエストに応じて 呼ばれるメソッドです。AbstractServlet のサブクラスはこれらのメソッドを適切に実装し なければいけません。返り値は特に規定されていません。

クライアントが使う可能性のある RFC で定義された HTTP のメソッドはすべて実装する必要があります。 クライアントからのリクエストに使われないと分かっているメソッドは実装しなくてもかまいません。 実装されていない HTTP メソッドであった場合、自身の service メソッドが 例外を発生させます。

このメソッドが呼ばれた時点では、クライアントからのリクエストに含まれる Entity Body の読み込みは まだ行われていません。WEBrick::HTTPRequest#query, WEBrick::HTTPRequest#body などの メソッドが読ばれた時点で読み込みが行われます。クライアントから巨大なデータが送られてくることを考慮して ユーザはプログラミングを行うべきです。

[PARAM] request:
クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
[PARAM] response:
クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。

例:

require 'webrick'
class HogeServlet < WEBrick::HTTPServlet::AbstractServlet
  def do_GET(req, res)
     res.body = 'hoge'
  end
end

srv = WEBrick::HTTPServer.new({ :DocumentRoot => './',
                                :BindAddress => '127.0.0.1',
                                :Port => 20080})
srv.mount('/', HogeServlet)
trap("INT"){ srv.shutdown }
srv.start
do_GET(request, response) -> ()

GET リクエストを処理します。

[PARAM] request:
クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
[PARAM] response:
クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
[EXCEPTION] WEBrick::HTTPStatus::NotModified:
自身に関連付けられたファイルが変更されていない場合に発生します。
[EXCEPTION] WEBrick::HTTPStatus::PartialContent:
部分的 GET リクエストを処理した場合に発生します。
make_partial_content(request, response, filename, filesize)

部分的 GET リクエストのためのレスポンスを作成します。

[PARAM] request:
クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
[PARAM] response:
クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
[PARAM] filename:
ファイル名を指定します。
[PARAM] filesize:
ファイルサイズを指定します。
[EXCEPTION] WEBrick::HTTPStatus::BadRequest:
リクエストが不正である場合に発生します。
[EXCEPTION] WEBrick::HTTPStatus::RequestRangeNotSatisfiable:
レスポンスボディが空になる場合などに発生します。
not_modified?(request, response, mtime, etag) -> bool

自身に関連付けられたファイルが更新されていなければ、真を返します。 そうでない場合は、偽を返します。

[PARAM] request:
クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
[PARAM] response:
クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
[PARAM] mtime:
自身に関連付けられたファイルの最終修正時刻を指定します。
[PARAM] etag:
ETag の値を指定します。
prepare_range(range, filesize) -> [Integer, Integer]

WEBrick::HTTPServlet::DefaultFileHandler#make_partial_content で利用する範囲情報を生成して返します。

[PARAM] range:
2 要素の配列を指定します。
[PARAM] filesize:
ファイルサイズを指定します。
service(request, response) -> ()

指定された WEBrick::HTTPRequest オブジェクト request の WEBrick::HTTPRequest#request_method に応じて、 自身の do_GET, do_HEAD, do_POST, do_OPTIONS... いずれかのメソッドを request と response を引数として呼びます。

WEBrick::HTTPServer オブジェクトはクライアントからのリクエストがあるたびに サーブレットオブジェクトを生成し service メソッドを呼びます。

特に理由が無い限り AbstractServlet のサブクラスがこのメソッドを定義する必要はありません。

[PARAM] request:
クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
[PARAM] response:
クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
[EXCEPTION] WEBrick::HTTPStatus::MethodNotAllowed:
指定された WEBrick::HTTPRequest オブジェクト req が自身に定義されていない HTTP のメソッドであった場合発生します。
class WEBrick::HTTPServlet::DefaultFileHandler