CSC 551: Web Programming
Fall 2001

Course Overview

Specific goals for the course To develop an understanding of the technology and protocols underlying the Web. To become familiar with the common tools and techniques for developing Web-based applications, both client-side and server-side. To develop a working knowledge of HTML, JavaScript, and Java as languages for developing Web applications. Skills developed programming & problem solving interface design and implementation ability to research and learn from external sources collaborative learning & development Internet & Web technologies history of Internet networking 7-layer model, TCP/IP protocols history of World Wide Web HyperText Transfer Protocol (HTTP) GET/POST requests, request headers (e.g., If-Modified-Since, ...) response headers (e.g., status code, Last-modified, ...) caching, cookies static vs. dynamic pages, client-side vs. server-side programming Web development HyperText Markup Language (HTML) tags vs. elements structural elements, text layout, text styles, lists hyperlinks, images, tables, frames style sheets STYLE attribute for an element vs. STYLE tag in HEAD vs. STYLE file Client-side Programming JavaScript language constructs variables: loosley typed, don't have to declare assignments, operators, control statements similar to C++ predefined functions (e.g., Math.sqrt) user-defined functions: typeless, can declare local variables predefined classes/objects: String, Array, Date, document, navigator user-defined classes: awkward to define, no info hiding serial programs code is embedded in SCRIPT tags, executed when page loads output produced by document.write appears in page event-driven programs code is specified in page elements, called to handle events e.g., OnClick, OnMouseOver, OnMouseOut events for link/image form elements: button, text box, text area, selection list, ... properties: e.g., name, type value methods: e.g., blur(), focus(), click() event handlers: e.g., onblur, onfocus, onchange, onclick, ... techniques: form validation, output to window/frame, timeouts, cookies Java design goals platform independence, portable, secure, simple, object-oriented, ... source code compiled into Java byte code, then interpreted language constructs basic syntax similar to C++, but simpler & more robust class vs. instance variables/methods, primitive vs. reference types no explicit pointers, automatic garbage collection extensive library support: String, Array, Vector, Stack, HashTable, ... no templates, but can store arbitrary Objects via inheritance, wrappers Java applets inherit from Applet class, default methods include init, paint, ... APPLET & OBJECT tags, applet parameters & dimensions Graphics object, methods (drawRect, drawString, ...), double buffering GUI elements, applet layout, event handling JavaBeans: reusable, packaged components Java Archive (JAR) files: multiple Java files/classes zipped together Integrating JavaScript & Java calling Java routines from JavaScript: possible using Netscape calling applet methods from JavaScript: document.APPLET_NAME.METHOD_CALL(...) accessing HTML/JavaScript from an applet: more complex, use JSObject class extract window object, document object, form object, field object, ... Server-side programming advantages: cross-platform, more tools/power, code integrity Common Gateway Interface (CGI) language-neutral protocol for Web server/program communication reads from standard input: URL-encoded data containing field names & values writes to standard output: response header + blank + page data server-specific technologies Netscape ONE, including LiveWire (Server-Side JavaScript) Microsoft DNA, including Active Server Pages server-independent technologies: Java servlets server-side equivalent to applets; similar to CGI but executed by server advanced Web development tools: Cold Fusion vs. WebObjects Emerging technologies Dynamic HTML, ActiveX, XML