Version: 4.1.5

Web Server: PLT HTTP Server

Jay McCarthy <jay at plt-scheme dot org>

The Web Server collection provides libraries that can be used to develop Web applications in Scheme.

    1 Running the Web Server

      1.1 Instant Servlets

        1.1.1 Customization API

      1.2 Simple Single Servlet Servers

      1.3 Command-line Tools

      1.4 Functional

    2 Writing Servlets

      2.1 Defining a Servlet

        2.1.1 Version 1 Servlets

        2.1.2 Version 2 Servlets

        2.1.3 Stateless Servlets

          2.1.3.1 Usage Considerations

      2.2 APIs

        2.2.1 Standard API

        2.2.2 Stateless API

      2.3 Common Contracts

      2.4 HTTP

        2.4.1 Requests

        2.4.2 Bindings

        2.4.3 Responses

        2.4.4 Placing Cookies

        2.4.5 Extracting Cookies

        2.4.6 Redirect

        2.4.7 Basic Authentication

        2.4.8 Digest Authentication

      2.5 Web Interaction

      2.6 Stateless Web Interaction

        2.6.1 Low Level

        2.6.2 High Level

      2.7 Web Cells

        2.7.1 Stateless Web Cells

      2.8 File Boxes

      2.9 Stateless Web Parameters

      2.10 URL-Based Dispatch

        2.10.1 Using web-server/dispatch

        2.10.2 API Reference

        2.10.3 Built-in URL patterns

        2.10.4 Extending web-server/dispatch

      2.11 Formlets

        2.11.1 Basic Formlet Usage

        2.11.2 Syntactic Shorthand

        2.11.3 Functional Usage

        2.11.4 Predefined Formlets

        2.11.5 Utilities

      2.12 Templates

        2.12.1 Static

        2.12.2 Dynamic

        2.12.3 Gotchas

        2.12.4 HTTP Responses

        2.12.5 API Details

        2.12.6 Conversion Example

      2.13 Continuation Managers

        2.13.1 General

        2.13.2 No Continuations

        2.13.3 Timeouts

        2.13.4 LRU

      2.14 Stuffers

        2.14.1 Basic Combinators

        2.14.2 Serialization

        2.14.3 Base64 Encoding

        2.14.4 GZip Compression

        2.14.5 Key/Value Storage

        2.14.6 Hash-addressed Storage

        2.14.7 HMAC-SHA1 Signing

        2.14.8 Helpers

    3 Extending the Web Server

      3.1 Configuration

        3.1.1 Configuration Table Structure

        3.1.2 Configuration Table

        3.1.3 Servlet Namespaces

          3.1.3.1 Why this is useful

        3.1.4 Standard Responders

      3.2 Setting Up Servlets

        3.2.1 Internal Servlet Representation

      3.3 Dispatchers

        3.3.1 General

        3.3.2 Mapping URLs to Paths

        3.3.3 Sequencing

        3.3.4 Timeouts

        3.3.5 Lifting Procedures

        3.3.6 Filtering Requests

        3.3.7 Procedure Invocation upon Request

        3.3.8 Logging

        3.3.9 Password Protection

        3.3.10 Virtual Hosts

        3.3.11 Serving Files

        3.3.12 Serving Servlets

        3.3.13 Statistics

        3.3.14 Limiting Requests

      3.4 Web Config Unit

        3.4.1 Configuration Signature

        3.4.2 Configuration Units

      3.5 Web Server Unit

        3.5.1 Signature

        3.5.2 Unit

      3.6 Internal

        3.6.1 Timers

        3.6.2 Connection Manager

        3.6.3 Dispatching Server

          3.6.3.1 Dispatching Server Signatures

          3.6.3.2 Dispatching Server Unit

          3.6.3.3 Threads and Custodians

        3.6.4 Serializable Closures

          3.6.4.1 Define Closure

        3.6.5 Cache Table

        3.6.6 MIME Types

        3.6.7 Serialization Utilities

        3.6.8 URL Param

        3.6.9 GZip

        3.6.10 Miscellaneous Utilities

          3.6.10.1 Contracts

          3.6.10.2 Lists

          3.6.10.3 URLs

          3.6.10.4 Paths

          3.6.10.5 Exceptions

          3.6.10.6 Strings

          3.6.10.7 Bytes

    4 Troubleshooting and Tips

      4.1 Why are my servlets not updating on the server when I change the code on disk?

      4.2 What special considerations are there for security with the Web Server?

      4.3 How do I use Apache with the PLT Web Server?

      4.4 IE ignores my CSS or behaves strange in other ways

      4.5 Can the server create a PID file?

      4.6 How do I set up the server to use HTTPS?

      4.7 How do I limit the number of requests serviced at once by the Web Server?

    5 Acknowledgements

    Index