diff --git a/collects/web-server/docs/reference/configuration.scrbl b/collects/web-server/docs/reference/configuration.scrbl index 6777861eb5..8472a8b42a 100644 --- a/collects/web-server/docs/reference/configuration.scrbl +++ b/collects/web-server/docs/reference/configuration.scrbl @@ -6,7 +6,7 @@ #:style 'toc]{Configuration} There are a number of libraries and utilities useful for -configuring the @file{web-server}. +configuring the @web-server . @local-table-of-contents[] @@ -14,7 +14,7 @@ configuring the @file{web-server}. @section[#:tag "configuration-table-structs.ss"]{Configuration Table Structure} @file{configuration/configuration-table-structs.ss} provides the following structures that -represent a standard configuration (see @secref["web-server-unit.ss"]) of the @file{web-server}. +represent a standard configuration (see @secref["web-server-unit.ss"]) of the @web-server . The contracts on this structure influence the valid types of values in the configuration table S-expression file format described in @secref["configuration-table.ss"]. @@ -176,11 +176,11 @@ Example: @subsection{Why this is useful} A different namespace is needed for each servlet, so that if servlet A and servlet B both use -a stateful module C, they will be isolated from one another. We see the @file{web-server} as +a stateful module C, they will be isolated from one another. We see the @web-server as an operating system for servlets, so we inherit the isolation requirement on operating systems. However, there are some modules which must be shared. If they were not, then structures cannot -be passed from the @file{web-server} to the servlets, due to a subtlety in the way MzScheme +be passed from the @web-server to the servlets, due to a subtlety in the way MzScheme implements structures. Since, on occasion, a user will actually wanted servlets A and B to interact through module C. diff --git a/collects/web-server/docs/reference/dispatchers.scrbl b/collects/web-server/docs/reference/dispatchers.scrbl index 280e920538..c5a0b330f2 100644 --- a/collects/web-server/docs/reference/dispatchers.scrbl +++ b/collects/web-server/docs/reference/dispatchers.scrbl @@ -4,11 +4,11 @@ @title[#:tag "dispatchers" #:style 'toc]{Dispatchers} -The @file{web-server} is really just a peculiar configuration of a +The @web-server is really just a particular configuration of a dispatching server. There are a number of dispatchers that are defined -to support the @file{web-server}. Other dispatching servers, or variants -of the @file{web-server}, may find these useful. In particular, if you want -a peculiar processing pipeline for your @file{web-server} installation, this +to support the @web-server . Other dispatching servers, or variants +of the @web-server , may find these useful. In particular, if you want +a peculiar processing pipeline for your @web-server installation, this documentation will be useful. @local-table-of-contents[] @@ -44,6 +44,19 @@ different. For example, it may apply some test to the request object, perhaps checking for a valid source IP address, and error if the test is not passed, and call @scheme[next-dispatcher] otherwise. +Consider the following example dispatcher, that captures the essence of URL rewriting: +@schemeblock[ + (code:comment "(url? -> url?) dispatcher? -> dispatcher?") + (lambda (rule inner) + (lambda (conn req) + (code:comment "Call the inner dispatcher...") + (inner conn + (code:comment "with a new request object...") + (copy-struct request req + (code:comment "with a new URL!") + [request-uri (rule (request-uri req))])))) +] + @; ------------------------------------------------------------ @section[#:tag "filesystem-map.ss"]{Mapping URLs to Paths} @@ -126,7 +139,7 @@ URL path. and if so, calls @scheme[proc] for a response. } -This is used in the standard @file{web-server} pipeline to provide +This is used in the standard @web-server pipeline to provide a URL that refreshes the password file, servlet cache, etc. @; ------------------------------------------------------------ diff --git a/collects/web-server/docs/reference/lang.scrbl b/collects/web-server/docs/reference/lang.scrbl index 57b83b3626..5a7000ef75 100644 --- a/collects/web-server/docs/reference/lang.scrbl +++ b/collects/web-server/docs/reference/lang.scrbl @@ -4,7 +4,7 @@ @title[#:tag "lang" #:style 'toc]{Web Language Servlets} -The @file{web-server} allows servlets to be written in a special Web +The @web-server allows servlets to be written in a special Web language that is nearly identical to Scheme. Herein we discuss how it is different and what API is provided. diff --git a/collects/web-server/docs/reference/managers.scrbl b/collects/web-server/docs/reference/managers.scrbl index 9502803667..5d820f6917 100644 --- a/collects/web-server/docs/reference/managers.scrbl +++ b/collects/web-server/docs/reference/managers.scrbl @@ -107,7 +107,7 @@ Web Language. (See @secref["lang"].) } This manager has been found to be... problematic... in large-scale -deployments of the @file{web-server}. +deployments of the @web-server . @; ------------------------------------------------------------ @section[#:tag "lru.ss"]{LRU} diff --git a/collects/web-server/docs/reference/private.scrbl b/collects/web-server/docs/reference/private.scrbl index a3df32aded..be3f5c7463 100644 --- a/collects/web-server/docs/reference/private.scrbl +++ b/collects/web-server/docs/reference/private.scrbl @@ -4,7 +4,7 @@ @title[#:tag "private" #:style 'toc]{Internal} -The @file{web-server} is a complicated piece of software and as a result, +The @web-server is a complicated piece of software and as a result, defines a number of interesting and independently useful sub-components. Some of these are documented here. @@ -106,7 +106,7 @@ for doing this. @; ------------------------------------------------------------ @section[#:tag "dispatch-server-unit.ss"]{Dispatching Server} -The @file{web-server} is just a configuration of a dispatching server. +The @web-server is just a configuration of a dispatching server. This dispatching server component is useful on its own. @file{private/dispatch-server-sig.ss} defines the following signatures: @@ -253,7 +253,7 @@ values. @file{private/mod-map.ss} compresses the serialized representation. @; ------------------------------------------------------------ @section[#:tag "url-param.ss"]{URL Param} -The @file{web-server} needs to encode information in URLs. If this data +The @web-server needs to encode information in URLs. If this data is stored in the query string, than it will be overridden by browsers that make GET requests to those URLs with more query data. So, it must be encoded in URL params. @file{private/url-param.ss} provides functions for helping @@ -277,7 +277,7 @@ with this process. @; ------------------------------------------------------------ @section[#:tag "util.ss"]{Miscellaneous Utilities} -There are a number of other miscellaneous utilities the @file{web-server} +There are a number of other miscellaneous utilities the @web-server needs. They are provided by @file{private/util.ss}. @subsection{Lists} diff --git a/collects/web-server/docs/reference/reference.scrbl b/collects/web-server/docs/reference/reference.scrbl index 30c418a5d3..be6a0c1bb1 100644 --- a/collects/web-server/docs/reference/reference.scrbl +++ b/collects/web-server/docs/reference/reference.scrbl @@ -4,7 +4,7 @@ @title[#:tag "web-server-ref"]{Web Server Reference Manual} @author{Jay McCarthy (jay\@plt-scheme.org)} -The @file{web-server} collection provides libraries that can be used to +The @web-server collection provides libraries that can be used to develop Web applications in Scheme. @table-of-contents[] @@ -29,7 +29,7 @@ develop Web applications in Scheme. @section[#:tag "ack"]{Acknowledgements} We thank Matthew Flatt for his superlative work on MzScheme. -We thank the previous maintainers of the PLT Web Server: Paul T. Graunke, Mike Burns, and Greg Pettyjohn +We thank the previous maintainers of the @web-server : Paul T. Graunke, Mike Burns, and Greg Pettyjohn Numerous people have provided invaluable feedback on the server, including Eli Barzilay, Ryan Culpepper, Robby Findler, Dan Licata, Matt Jadud, Jacob Matthews, Matthias Radestock, Andrey Skylar, diff --git a/collects/web-server/docs/reference/running.scrbl b/collects/web-server/docs/reference/running.scrbl index b56fdf06f6..f5095fabf2 100644 --- a/collects/web-server/docs/reference/running.scrbl +++ b/collects/web-server/docs/reference/running.scrbl @@ -3,7 +3,7 @@ @title[#:tag "run.ss" #:style 'toc]{Running the Web Server} - + There are a number of ways to run the Web Server. The two primary ways are through a command-line tool or through a function call. @@ -12,13 +12,13 @@ are through a command-line tool or through a function call. @; ------------------------------------------------------------ @section[#:tag "command-line-tools"]{Command-line Tools} -Two command-line utilities are provided with the @file{web-server}: +Two command-line utilities are provided with the @web-server : @exec{plt-web-server-text [-f -p -a ]} @exec{plt-web-server [-f -p -a ]} -The first runs the @file{web-server} with MzScheme, while the second runs +The first runs the @web-server with MzScheme, while the second runs the server with MrEd, providing a graphical UI. The optional file-name argument specifies the path to a @scheme[configuration-table] S-expression (see @secref["configuration-table.ss"].) If this is not provided, the default @@ -34,7 +34,7 @@ the server runs until the process is killed. @section[#:tag "web-server.ss"]{Functional} @file{web-server.ss} provides a number of functions for easing embedding -of the @file{web-server} in other applications, or loading a custom +of the @web-server in other applications, or loading a custom dispatcher. See @file{run.ss} for an example of such a script. @defproc[(serve [#:dispatch dispatch dispatcher?] @@ -70,6 +70,6 @@ dispatcher. See @file{run.ss} for an example of such a script. } @defproc[(do-not-return) void]{ - This function does not return. If you are writing a script to load the @file{web-server} + This function does not return. If you are writing a script to load the @web-server you are likely to want to call this functions at the end of your script. } diff --git a/collects/web-server/docs/reference/servlet-env.scrbl b/collects/web-server/docs/reference/servlet-env.scrbl index ee5d1f5b55..ec8ee0f47c 100644 --- a/collects/web-server/docs/reference/servlet-env.scrbl +++ b/collects/web-server/docs/reference/servlet-env.scrbl @@ -2,9 +2,9 @@ @require["../web-server.ss"] @title[#:tag "servlet-env.ss" - #:style 'toc]{Servlet Environment} + #:style 'toc]{Scheme Servlet Environment} -The @file{web-server} provides a means of running Scheme servlets +The @web-server provides a means of running Scheme servlets from within DrScheme, or any other REPL. @file{servlet-env.ss} provides the servlet API from @file{servlet.ss} @@ -14,8 +14,9 @@ as well as the following special forms: @defform[(on-web port servlet-expr)]{ This constructs a small servlet, where the body of the @scheme[start] procedure is - @scheme[servlet-expr], runs the @file{web-server} on port @scheme[port], and opens + @scheme[servlet-expr], runs the @web-server on port @scheme[port], and opens a browser to a URL accessing the constructed servlet. The call blocks until the servlet finishes its computation, i.e. @scheme[servlet-expr] is evaluated, and - returns its result. + returns its result. @scheme[servlet-expr] may use the entire Scheme servlet API. + (See @secref["servlet"].) } \ No newline at end of file diff --git a/collects/web-server/docs/reference/servlet.scrbl b/collects/web-server/docs/reference/servlet.scrbl index 45cbce6451..13b79a3c35 100644 --- a/collects/web-server/docs/reference/servlet.scrbl +++ b/collects/web-server/docs/reference/servlet.scrbl @@ -4,7 +4,7 @@ @title[#:tag "servlet" #:style 'toc]{Scheme Servlets} -The @file{web-server} allows servlets to be written in Scheme. It +The @web-server allows servlets to be written in Scheme. It provides the supporting API, described below, for the construction of these servlets. This API is provided by @file{servlet.ss}. @@ -15,7 +15,7 @@ of these servlets. This API is provided by @file{servlet.ss}. A @defterm{servlet} is a module that provides the following: -@defthing[interface-version symbol?]{ +@defthing[interface-version (or/c 'v1 'v2)]{ A symbol indicating the servlet interface the servlet conforms to. This influences the other provided identifiers. } @@ -57,15 +57,14 @@ for use in servlets. @defthing[servlet-response? contract?]{Equivalent to @scheme[any/c].} @; XXX Remove callbacks -@defproc[(xexpr/callback? [v any/c]) - boolean?]{ - Checks if @scheme[v] matches @scheme[xexpr?], except that embedded +@defthing[xexpr/callback? contract?]{ + Checks if the value matches @scheme[xexpr?], except that embedded procedures are allowed. } -@defthing[response-generator? contract?]{Equivalent to @scheme[(k-url? . -> . servlet-response?)].} +@defthing[k-url? contract?]{Equivalent to @scheme[string?].} -@defthing[k-url? (any/c . -> . boolean?)]{Equivalent to @scheme[string?].} +@defthing[response-generator? contract?]{Equivalent to @scheme[(k-url? . -> . servlet-response?)].} @defthing[url-transform? contract?]{Equivalent to @scheme[(k-url? . -> . k-url?)].} @@ -142,7 +141,7 @@ for accessing request bindings. [binds (listof (cons/c symbol? string?))]) string?]{ Returns the single binding associated with @scheme[id] in the a-list @scheme[binds] - if there is exactly one binding. Otherwise errors. + if there is exactly one binding. Otherwise raises @scheme[exn:fail]. } @defproc[(extract-bindings [id symbol?] @@ -379,8 +378,8 @@ you lose the filename. @; ------------------------------------------------------------ @section[#:tag "servlet-url.ss"]{Servlet URLs} -@file{servlet/servlet-url.ss} provides a function that might be useful to you. -This will be collapsed somewhere else eventually. +@file{servlet/servlet-url.ss} provides functions that might be useful to you. +They may eventually provided by another module. @defproc[(request->servlet-url (req request?)) servlet-url?]{Generates a value to be passed to the next function.} diff --git a/collects/web-server/docs/reference/web-config-unit.scrbl b/collects/web-server/docs/reference/web-config-unit.scrbl index b3927bca3a..61164ea611 100644 --- a/collects/web-server/docs/reference/web-config-unit.scrbl +++ b/collects/web-server/docs/reference/web-config-unit.scrbl @@ -4,7 +4,7 @@ @title[#:tag "web-config-unit.ss" #:style 'toc]{Web Config Unit} -The @file{web-server} offers a unit-based approach to configuring the server. +The @web-server offers a unit-based approach to configuring the server. @file{web-config-sig.ss} provides the signature @defthing[web-config^ signature?] signature, which contains the following diff --git a/collects/web-server/docs/reference/web-server-unit.scrbl b/collects/web-server/docs/reference/web-server-unit.scrbl index 687fdc71a1..87b1c41dd2 100644 --- a/collects/web-server/docs/reference/web-server-unit.scrbl +++ b/collects/web-server/docs/reference/web-server-unit.scrbl @@ -4,7 +4,7 @@ @title[#:tag "web-server-unit.ss" #:style 'toc]{Web Server Unit} -The @file{web-server} offers a unit-based approach to running the server. +The @web-server offers a unit-based approach to running the server. @file{web-server-sig.ss} provides the @defthing[web-server^ signature?] signature with two elements: diff --git a/collects/web-server/docs/web-server.ss b/collects/web-server/docs/web-server.ss index 1a7e53a7e4..31f9ce39c1 100644 --- a/collects/web-server/docs/web-server.ss +++ b/collects/web-server/docs/web-server.ss @@ -11,6 +11,11 @@ ; XXX @require ; XXX editting mode drscheme or emacs + ; XXX @scheme in code:comment + + (define web-server "Web Server") + (define webserver "Web Server") + ; XXX Make look good (define (author x) (elem (hspace 4) @@ -18,4 +23,5 @@ (provide (all-from (lib "manual.ss" "scribble")) (all-from (lib "eval.ss" "scribble")) + web-server author)) \ No newline at end of file