84 lines
2.8 KiB
Racket
84 lines
2.8 KiB
Racket
#lang scribble/doc
|
|
@(require "web-server.rkt")
|
|
|
|
@title[#:tag "stateless"]{Stateless Servlets}
|
|
|
|
@defmodulelang*[(web-server/base web-server)]
|
|
|
|
@section[#:style 'hidden #:tag "stateless-example"]{Example}
|
|
|
|
A stateless servlet should @racket[provide] the following exports:
|
|
|
|
@(require (for-label web-server/http
|
|
racket/serialize
|
|
(except-in web-server/stuffers stuffer)
|
|
web-server/managers/none
|
|
(except-in web-server/managers/manager manager)
|
|
"dummy-stateless-servlet.rkt")) @; to give a binding context
|
|
@declare-exporting[#:use-sources (web-server/scribblings/dummy-stateless-servlet)]
|
|
|
|
@defthing[interface-version (one-of/c 'stateless)]{
|
|
This indicates that the servlet is a stateless servlet.
|
|
}
|
|
|
|
@defthing[stuffer (stuffer/c serializable? bytes?)]{
|
|
This is the @tech{stuffer} that will be used for the servlet.
|
|
|
|
If it is not provided, it defaults to @racket[default-stuffer].
|
|
}
|
|
|
|
@defthing[manager manager?]{
|
|
This is the @tech{manager} that will be used for the servlet.
|
|
|
|
If it is not provided, it defaults to @racket[(create-none-manager #f)].
|
|
}
|
|
|
|
@defproc[(start [initial-request request?])
|
|
response?]{
|
|
This function is called when an instance of this servlet is started.
|
|
The argument is the HTTP request that initiated the instance.
|
|
}
|
|
|
|
An example @racket['stateless] servlet module:
|
|
@racketmod[
|
|
web-server
|
|
(require web-server/http)
|
|
(provide interface-version stuffer start)
|
|
(define interface-version 'stateless)
|
|
(define stuffer
|
|
(stuffer-chain
|
|
serialize-stuffer
|
|
(md5-stuffer (build-path (find-system-path 'home-dir) ".urls"))))
|
|
(define (start req)
|
|
(response/xexpr
|
|
`(html (body (h2 "Look ma, no state!")))))
|
|
]
|
|
|
|
The @racketmodname[web-server/base] language exports all of the functions
|
|
and syntax from @racketmodname[racket/base] and nothing else.
|
|
|
|
The @racketmodname[web-server] language exports all of the functions
|
|
and syntax from the following libraries: @racketmodname[racket],
|
|
@racketmodname[net/url], @racketmodname[web-server/http],
|
|
@racketmodname[web-server/http/bindings],
|
|
@racketmodname[web-server/lang/abort-resume],
|
|
@racketmodname[web-server/lang/web],
|
|
@racketmodname[web-server/lang/native],
|
|
@racketmodname[web-server/lang/web-param],
|
|
@racketmodname[web-server/lang/web-cells],
|
|
@racketmodname[web-server/lang/file-box],
|
|
@racketmodname[web-server/lang/soft],
|
|
@racketmodname[web-server/dispatch], and
|
|
@racketmodname[web-server/stuffers]. Some of these are documented in
|
|
the subsections that follow.
|
|
|
|
@include-section["stateless-usage.scrbl"]
|
|
@include-section["serial.scrbl"]
|
|
@include-section["native.scrbl"]
|
|
@include-section["lang.scrbl"]
|
|
@include-section["lang-web-cells.scrbl"]
|
|
@include-section["file-box.scrbl"]
|
|
@include-section["web-param.scrbl"]
|
|
@include-section["soft.scrbl"]
|
|
@include-section["stuffers.scrbl"]
|