;; applet.sss ;; (lambda (httpservlet) (define (read-all in) (define (drain in sbuffer) (let ((line (.readLine in))) (if (eq? line #null) (.toString sbuffer) (drain in (.append (.append sbuffer line) "\n"))))) (drain in (java.lang.StringBuffer.))) (define (doGet request response) (tryCatch (let () (define (getRealPath servlet File) (.getRealPath (.getServletContext (.getServletConfig servlet)) File)) (define filename (getRealPath httpservlet (.getServletPath request))) (define file (java.io.BufferedReader. (java.io.FileReader. filename))) (define title (.readLine file)) (define vendor (.readLine file)) (define homepage (.readLine file)) (define desc (.readLine file)) (define icon (.readLine file)) (define codestring (read-all file)) (define (html_quote x) (define s (java.util.StringTokenizer. x "<>&\"" #t)) (define (maketokens s) (if (not (.hasMoreTokens s)) () (let ((x (.nextToken s))) (cons (case x (("<") "<") ((">") ">") (("\"") """) (("&") "&") (else x)) (maketokens s))))) (apply string-append (maketokens s))) (tryCatch (begin (.setContentType response "text/html") (let* ((codebase {http://[(.getServerName request)]:[(.getServerPort request)]}) (href (.getRequestURI request))) (.println (.getWriter response) { Applet Demo

Applet Demo Page

} ) )) (lambda(e) (.setContentType response "text/plain") (display (list "ERROR: " e) (.getWriter response)))) ) (lambda(ee) (.setContentType response "text/plain") (display (list "ERROR: " ee) (.getWriter response)))) ) (define (doPost request response) (.doGet httpservlet request response)) ;; store scheme procedures into the httpservlet (.do_get$ httpservlet doGet) (.do_post$ httpservlet doPost) )