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

class WEBrick::HTTPServlet::AbstractServlet

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

要約

サーブレットの抽象クラスです。実装は AbstractServlet のサブクラスで行います。

サーブレットは以下のように使われます。WEBrick::HTTPServlet::CGIHandlerwebrick/httpservlet/cgihandler で提供されているサーブレットです。 CGIHandler は AbstractServlet のサブクラスです。

require 'webrick'
srv = WEBrick::HTTPServer.new({ :DocumentRoot => './',
                                :BindAddress => '127.0.0.1',
                                :Port => 20080})
srv.mount('/view.cgi', WEBrick::HTTPServlet::CGIHandler, 'view.rb')
trap("INT"){ srv.shutdown }
srv.start

上のスクリプトでは以下のような流れで view.rb は実行されます。

  1. サーバのパス /view.cgi と CGIHandler がマウントにより結びつけられます。
  2. パス /view.cgi にアクセスがあるたびにサーバ(WEBrick::HTTPServer オブジェクト)は 'view.rb' を引数として CGIHandler オブジェクトを生成します。
  3. サーバはリクエストオブジェクトを引数として CGIHandler#service メソッドを呼びます。
  4. CGIHandler オブジェクトは view.rb を CGI スクリプトとして実行します。

このように WEBrick では Web サーバの機能の大部分がサーブレットの形で提供されています。またサーブレットを作成することにより新たな機能を Web サーバに追加することもできます。

特異メソッド

定義 説明
get_instance(server, *options) -> WEBrick::HTTPServlet::AbstractServlet

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

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

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

インスタンスメソッド

定義 説明
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 のサブクラスはこれらのメソッドを適切に実装しなければいけません。返り値は特に規定されていません。

service(request, response) -> ()

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

継承したメソッド

! != __id__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined !~ <=> == === =~ __send__ _dump class clone define_singleton_method display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself marshal_dump marshal_load method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? singleton_class singleton_method singleton_methods taint tainted? tap to_a to_ary to_hash to_int to_io to_proc to_regexp to_s to_str trust untaint untrust untrusted? .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_ENGINE_VERSION ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE