A web server that delivers dynamic web content using Scheme server-side scripting as its backend.

Group 3

Jing Chen
Bryant Forsgren
Richard Kohanzakay
Jim Chow
Fred Jabbour
David Lee
Alessandro Maoggi

Overview

This product will let web page designers to process forms, query databases, and do basic string manipulation by embedding small Scheme fragments into their HTML pages. This is intended to be an alternative to other means of generating dynamic web content such as: CGI, JSP, ASP, or PHP. By using Scheme as the underlying scripting language, we believe web designers will have greater flexibility and quicker development cycles.

This product consists of two main components: a web server and a Scheme interpreter. Both components will be written in Java and will be able to execute on any Java-enabled platform. The web server will serve static HTML pages as well as invoke the interpreter for generating dynamic HTML. The interpreter will take requests from the server, evaluate the Scheme code, and output HTML (which the web server will send back to the client). Each component is described in more detail below.

Web Server

This part of the system will provide a scalable front end to our scripting engine. The web server will handle a subset of the functionality of HTTP/1.0. In particular, it will be able to handle HEAD, GET, and POST client requests. To cope with the demands of web clients, this server will be designed to handle multilpe simultaneous requests efficiently.

Scheme Interpreter

The functionality of this module is to take a Scheme-embedded HTML file, interpret the Scheme code, and return any (presumably HTML) output. The Scheme interpreter will understand basic Scheme types, such as real numbers, cons pairs, strings, and functions. Although the interpreter will not include many library functions prevalent in other Scheme interpreters, it will contain functions useful for HTML output and manipulation, such as regular expression handling or form parsers. The interpreter will also give the script writer the ability to access sources of information, like databases, through scheme functions.

Since the project will be written entirely in Java, we will be able to build it on any platform. We will probably need some server space for a CVS repository. But otherwise, we have no special needs for software packages.

Back to [Project List | 169 Home]