1 / 32

Programming Interactive Web Scripts

Programming Interactive Web Scripts. Matthias Felleisen PLT. PLT. principles of program design introductory script development principles of programming languages design analysis correctness programming environments & tools. PLT: First Session. principles of program design

kalei
Download Presentation

Programming Interactive Web Scripts

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming Interactive Web Scripts Matthias Felleisen PLT PL Day

  2. PLT • principles of program design • introductory • script development • principles of programming languages • design • analysis • correctness • programming environments & tools PL Day

  3. PLT: First Session • principles of program design • introductory • script development: dynamic Web content • principles of programming languages • design • analysis • correctness • programming environments & tools PL Day

  4. Dynamic Web Content • USA Today says: “… more than half the pages on the Web are generated on demand.” (July 2000) • Why? • connection to up-to-date database • determining consumer information • on-line experiments • games PL Day

  5. Dynamic Web Content • Technology: Programming, Contents • Programming first: • CGI • Java Servlets • Contents first • Active Server Pages • Java Server Pages PL Day

  6. Dynamic Web Content • What is a CGI script? a servlet? How do they work? Why is it difficult to design interactive ones? • Can we automate their development? • What does this teach us about GUI dialogues in general? PL Day

  7. The Common Gateway Interface PL Day

  8. http://www.ccs.neu.edu/cgi-bin/goto.pl PL Day

  9. Interactive Web Scripts • Some URLs point to programs. • The server invokes the program, which writes a page to the standard output port and then terminates. • The server sents the page to the client that requested the URL. PL Day

  10. Interactive Web Scripts: Hello World Web Script (output-http-headers) (write-xml/content (xexpr->xml '(html (title "My First CGI Page") (body "Hello World")))) Plain Program (printf "My First CGI Page~n”) (printf "Hello World") PL Day

  11. Interactive Web Scripts: Server Status (output-http-headers) (write-xml/content (xexpr->xml `(html (title "Server Status") (body ,(read-line (first (process "uptime"))))))) (printf "Server Status: ~a~n" (read-line (first (process "uptime"))))))) PL Day

  12. Interactive Web Scripts: Multiply-by-10.com (define (get-number) (printf "Enter a number ") (flush-output) (read)) (printf "Multiply-by-10.com") (printf "the result is: ~a" (* (get-number) 10) ) (output-http-headers) (define (get-number) (get-binding ‘NUM (bindings))) (write-xml/content (xexpr->xml `(html (title "Multiply-by-10.com") (body "the result is: " ,(* (get-number) 10))))) PL Day

  13. Interactive Web Scripts: Multiply-by-10.com Where do babies come from? <html> <head><title>Multiply-by-10.com</title></head> <body> <h1>Multiply</h1> <form method="get" action="http://www. .../mult-by-10.ss"> Enter a number <input type="text" name= "NUM" value="0"> </form> </body> </html> PL Day

  14. Interactive Web Scripts: Multiply-by-10.com PL Day

  15. Interactive Web Scripts: Multiply.com (define (get-number) (printf "Enter a number ") (flush-output) (read)) (printf "Multiply.com") (printf "the result is: ~a" (* (get-number) (get-number)) ) (output-http-headers) … (write-xml/content (xexpr->xml `(html (title "Multiply.com") (body "the result is: " ,(* (get-number) (get-number)))))) PL Day

  16. Interactive Web Scripts: DontMultiply.com • A CGI script terminates after producing a page. • To query the consumer, the script must produce a page with a form. • Ergo: To interact, a CGI program must terminate. PL Day

  17. Interactive Web Scripts: DontMultipy.com The natural structure of an interactive Web program doesn’t work naturally with the Common Gateway Interface. PL Day

  18. Interactive Web Scripts: Interaction • Current solution: programmers invert program by hand. • A program with N interaction points becomes a set of N programs. • The programs communicate all necessary data “manually”. PL Day

  19. Interacting with Web Scripts PL Day

  20. Interacting with Web Scripts PL Day

  21. Interacting with Web Scripts PL Day

  22. Interacting with Web Scripts And now we go BACK: PL Day

  23. Interacting with Web Scripts PL Day

  24. Interactive Web Scripts: Multiply.com <html> <head><title>Multiply</title></head> <body> <h1>Multiply</h1> <form method="get" action="http://www. .../multiply.ss"> Enter a number <input type="text" name= "NUM" value="0"> </form> </body> </html> PL Day

  25. Interactive Web Scripts: cgi-first.ss (output-http-headers) (write-xml/content (xexpr->xml `(html (title "The Multiply Page") (body `(form ([method "get"][action "http://.../cgi-second.ss"]) (p "Enter the second number") (input ([type "hidden"][name "first"] [value ,(get-number)])) (input ([type "text"] [name "second"][value "1"]))))))) PL Day

  26. Interactive Web Scripts: Multiply.com <html> <head><title>Multiply</title></head> <body> <h1>Multiply</h1> <form method="get" action="http://www. .../multiply.ss"> Enter the second number <input type="text" name= "second" value="0"> <input type= "hidden" name= "first" value= ”XXXXXX."> </form> </body> </html> PL Day

  27. Interactive Web Scripts: cgi-second.ss (output-http-headers) (write-xml/content (xexpr->xml `(html (title "The Multiply Page") (body "the result is: " ,(* (get-number 'first) (get-number ’NUM)))))))) PL Day

  28. Interactive Web Scripts and Continuations (define multiply (lambda (x) (lambda (y) (* x y)))) (define multiply-by-22 (lambda (y) (* 22 y))) (define multiply (lambda (x y) (* x y))) PL Day

  29. Interactive Web Scripts and Continuations cgi script cgi script consumer consumer the back button PL Day

  30. Interactive Web Scripts and Continuations cgi script consumer cgi script consumer the back button cloning PL Day

  31. PLT’s Interactive Web Script • Solution 1: Design Web server that supports coroutining. Use continuation objects. Graunke et al. ESOP 2001 • Solution 2: Design transformation that automatically inverts programs with N interaction points into N programs. Graunke et al. ASE 2001 & Jacob Matthews PL Day 2002 PL Day

  32. PLT’s Interactive GUI Scripts • Generalize this technique to certain GUI programs. • Graunke and Krishnamurthi, ICSE 2002. Graunke PL Day 2002. PL Day

More Related