Adding #lang web-server/base
This commit is contained in:
parent
a55029cf76
commit
145efa622e
|
@ -88,6 +88,12 @@
|
|||
mkd
|
||||
"add02.rkt - s/s/u, uri"
|
||||
(build-path example-servlets "add02.rkt"))
|
||||
|
||||
(test-add-two-numbers
|
||||
mkd
|
||||
"add02-base.rkt - s/s/u, uri"
|
||||
(build-path example-servlets "add02-base.rkt"))
|
||||
|
||||
|
||||
; XXX Use kont
|
||||
#;(test-add-two-numbers
|
||||
|
|
2
collects/web-server/base/lang/reader.rkt
Normal file
2
collects/web-server/base/lang/reader.rkt
Normal file
|
@ -0,0 +1,2 @@
|
|||
#lang s-exp syntax/module-reader
|
||||
web-server/lang/base
|
|
@ -0,0 +1,32 @@
|
|||
#lang web-server/base
|
||||
(require web-server/http
|
||||
web-server/lang/web
|
||||
net/url)
|
||||
(define interface-version 'stateless)
|
||||
(provide start interface-version)
|
||||
|
||||
;; get-number-from-user: string -> number
|
||||
;; ask the user for a number
|
||||
(define (gn msg)
|
||||
(let ([req
|
||||
(send/suspend/url
|
||||
(lambda (k-url)
|
||||
(response/xexpr
|
||||
`(html (head (title ,(format "Get ~a number" msg)))
|
||||
(body
|
||||
(form ([action ,(url->string k-url)]
|
||||
[method "get"]
|
||||
[enctype "application/x-www-form-urlencoded"])
|
||||
,(format "Enter the ~a number to add: " msg)
|
||||
(input ([type "text"] [name "number"] [value ""]))
|
||||
(input ([type "submit"]))))))))])
|
||||
(string->number
|
||||
(cdr (assoc 'number (url-query (request-uri req)))))))
|
||||
|
||||
(define (start initial-request)
|
||||
(response/xexpr
|
||||
`(html (head (title "Final Page"))
|
||||
(body
|
||||
(h1 "Final Page")
|
||||
(p ,(format "The answer is ~a"
|
||||
(+ (gn "first") (gn "second"))))))))
|
|
@ -1,26 +1,19 @@
|
|||
#lang racket/base
|
||||
(require (for-syntax racket/base)
|
||||
(for-syntax racket/list)
|
||||
(for-syntax "lang/labels.rkt")
|
||||
(for-syntax "lang/util.rkt")
|
||||
(for-syntax "lang/elim-letrec.rkt")
|
||||
(for-syntax "lang/anormal.rkt")
|
||||
(for-syntax "lang/elim-callcc.rkt")
|
||||
(for-syntax "lang/defun.rkt")
|
||||
"lang/lang-api.rkt")
|
||||
#lang racket
|
||||
(define-syntax-rule (reqpro m ...)
|
||||
(begin (require m ...)
|
||||
(provide (all-from-out m ...))))
|
||||
(provide (all-from-out racket))
|
||||
(reqpro web-server/lang/base
|
||||
net/url
|
||||
web-server/http
|
||||
web-server/http/bindings
|
||||
web-server/dispatch
|
||||
web-server/stuffers
|
||||
web-server/lang/abort-resume
|
||||
web-server/lang/web
|
||||
web-server/lang/native
|
||||
web-server/lang/web-cells
|
||||
web-server/lang/web-param
|
||||
web-server/lang/file-box
|
||||
web-server/lang/soft)
|
||||
|
||||
(provide (rename-out [lang-module-begin #%module-begin])
|
||||
(all-from-out "lang/lang-api.rkt"))
|
||||
|
||||
(define-for-syntax anormalize (make-anormal-term elim-letrec-term))
|
||||
|
||||
(define-syntax lang-module-begin
|
||||
(make-lang-module-begin
|
||||
make-labeling
|
||||
(make-module-case
|
||||
(make-define-case
|
||||
(lambda (stx)
|
||||
(define anf-stx (anormalize stx))
|
||||
(define no-callcc-stx (elim-callcc anf-stx))
|
||||
(define defun-stx (defun no-callcc-stx))
|
||||
defun-stx)))))
|
||||
|
|
26
collects/web-server/lang/base.rkt
Normal file
26
collects/web-server/lang/base.rkt
Normal file
|
@ -0,0 +1,26 @@
|
|||
#lang racket/base
|
||||
(require (for-syntax racket/base)
|
||||
(for-syntax racket/list)
|
||||
(for-syntax "labels.rkt")
|
||||
(for-syntax "util.rkt")
|
||||
(for-syntax "elim-letrec.rkt")
|
||||
(for-syntax "anormal.rkt")
|
||||
(for-syntax "elim-callcc.rkt")
|
||||
(for-syntax "defun.rkt")
|
||||
"lang-api.rkt")
|
||||
|
||||
(provide (rename-out [lang-module-begin #%module-begin])
|
||||
(all-from-out "lang-api.rkt"))
|
||||
|
||||
(define-for-syntax anormalize (make-anormal-term elim-letrec-term))
|
||||
|
||||
(define-syntax lang-module-begin
|
||||
(make-lang-module-begin
|
||||
make-labeling
|
||||
(make-module-case
|
||||
(make-define-case
|
||||
(lambda (stx)
|
||||
(define anf-stx (anormalize stx))
|
||||
(define no-callcc-stx (elim-callcc anf-stx))
|
||||
(define defun-stx (defun no-callcc-stx))
|
||||
defun-stx)))))
|
|
@ -1,26 +1,2 @@
|
|||
#lang racket
|
||||
(require net/url
|
||||
web-server/http
|
||||
web-server/http/bindings
|
||||
web-server/dispatch
|
||||
web-server/stuffers
|
||||
web-server/lang/abort-resume
|
||||
web-server/lang/web
|
||||
web-server/lang/native
|
||||
web-server/lang/web-cells
|
||||
web-server/lang/web-param
|
||||
web-server/lang/file-box
|
||||
web-server/lang/soft)
|
||||
(provide (except-out (all-from-out racket) #%module-begin)
|
||||
(all-from-out net/url
|
||||
web-server/http
|
||||
web-server/http/bindings
|
||||
web-server/dispatch
|
||||
web-server/stuffers
|
||||
web-server/lang/abort-resume
|
||||
web-server/lang/web
|
||||
web-server/lang/native
|
||||
web-server/lang/web-cells
|
||||
web-server/lang/web-param
|
||||
web-server/lang/file-box
|
||||
web-server/lang/soft))
|
||||
#lang racket/base
|
||||
(provide (except-out (all-from-out racket/base) #%module-begin))
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
@title[#:tag "stateless"]{Stateless Servlets}
|
||||
|
||||
@defmodulelang[web-server]
|
||||
@defmodulelang*[(web-server/base web-server)]
|
||||
|
||||
@section[#:style 'hidden #:tag "stateless-example"]{Example}
|
||||
|
||||
|
@ -54,14 +54,23 @@ An example @racket['stateless] servlet module:
|
|||
`(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.
|
||||
|
||||
These servlets have an extensive API available to them: @racketmodname[racket], @racketmodname[net/url], @racketmodname[web-server/http],
|
||||
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/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.
|
||||
@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"]
|
||||
|
|
Loading…
Reference in New Issue
Block a user