AbstractServlet allows HTTP server modules to be reused across multiple servers and allows encapsulation of functionality.

By default a servlet will respond to GET, HEAD (through an alias to GET) and OPTIONS requests.

By default a new servlet is initialized for every request. A servlet instance can be reused by overriding ::get_instance in the AbstractServlet subclass.

A Simple Servlet

class Simple < WEBrick::HTTPServlet::AbstractServlet

def do_GET request, response
  status, content_type, body = do_stuff_with request

  response.status = status
  response['Content-Type'] = content_type
  response.body = body

def do_stuff_with request
  return 200, 'text/plain', 'you got a page'


This servlet can be mounted on a server at a given path:

server.mount '/simple', Simple

Servlet Configuration

Servlets can be configured via initialize. The first argument is the HTTP server the servlet is being initialized for.

class Configureable < Simple

def initialize server, color, size
  super server
  @color = color
  @size = size

def do_stuff_with request
  content = "<p " \
            %q{style="color: #{@color}; font-size: #{@size}"} \
            ">Hello, World!"

  return 200, "text/html", content


This servlet must be provided two arguments at mount time:

server.mount '/configurable', Configurable, 'red', '2em'
Show files where this class is defined (1 file)
Register or log in to add new notes.