300 likes | 454 Views
CSCI 6962: Server-side Design and Programming. Course Introduction and Overview. Topics. Introduction to Client-Server Web Architectures Java Server Faces and Active Server Pages Problems and Topics in Server-side Programming Programming Assignments. Client-Server Web Architecture.
E N D
CSCI 6962: Server-side Design and Programming Course Introduction and Overview
Topics • Introduction to Client-Server Web Architectures • Java Server Faces and Active Server Pages • Problems and Topics in Server-side Programming • Programming Assignments
Client-Server Web Architecture • Client browser sends request for page to server • May contain form data and other information • Server sends response page and sends to client • May need to generate response page dynamically • Form parameters • Previous requests (such as items purchased so far) • Information in database Focus of this course
Client-Server Web Architecture Request to www.csis.ysu.edu for Syllabus.html port Server john public_html Client Browser Syllabus.html www.csis.ysu.edu/~john/Syllabus.html Response containing Syllabus.htm as a long string (<html><head><title>CSCI 6962 Syllabus</title> </head><body>…)
Dynamic Form Handling • Form data appended to request string Generates the request: http://www.cis.ysu.edu/~john/cgi-bin/test.pl&quantity=3 <FORM NAME="purchaseform" METHOD=GET ACTION=http://www.csis.ysu.edu/~john/cgi-bin/test.pl > Quantity: <INPUT TYPE="text" NAME="quantity" /> <BR /><BR /> <INPUT TYPE="submit" VALUE="SUBMIT"> /FORM>
Form Handling Server must: • Listen on port for requests • Parse request to determine values of parameters • Dynamically generate appropriate response page based on parameter values • Send response page back to client
Web Containers • Program running continuously on server • Runs code to handle requests • Built-in methods for parsing requests, generating responses • Handles other important functions: • Session tracking • Database access • Email generation • Security and encryption • …
Web Containers http://homer.cis.ysu.edu/reciept.jsp&quantity=3 Port Client Server Browser Web Container Listen on port Execute code in requested server page Generate corresponding html page Constantly running in background
Web Containers • Glassfish • Written in Java • Built on Apache Tomcat • NetBeans IDE • Acts as engine for Java servlets, Java Server Pages and Java Server Faces • Microsoft Internet Information Server (IIS) • Visual Basic/C# • Acts as engine for Active Server Pages
Server-side Evolution • Servlets • Programmatically generating response page • Server pages • Inserting dynamically generated code into web page • Goal: separate web designand dynamic code • Server faces/Active server pages • Directly linking client-side form elements to server-side objects (JavaBeans) • Goal: separate web page development from underlying business logic
Java Servlets Create output to response Get quantity from request Write response page as string to output with quantity inserted
Java Server Pages Java code executed inside web page Resulting value inserted into html
Java Server Faces • Use managed beans to control information • Data storage between pages • Computation methods (total bill, taxes, etc.) • Validation methods (positive quantity, items available) • Long-term storage (database read/write of orders) JSF web page JSF managed bean Web design team Business logic team
Java Server Faces Bean stores quantity Getters and setters to allow access
Java Server Faces Input bound to quantity property of bean XML tags specific to JSF
Java Server Faces widgetBean quantity: 3 3
Active Server Pages • Active Server Page approach:Create “form” which is translated to html
Active Server Pages • Server-side code manipulates “form elements” • Subroutine called when page submitted • Data read from elements (actually request string) • Used to set value of other elements
Active Server Pages • Resulting form translated to response page
Why Two Platforms • Both widely used in practice • Other platforms (Springs, Ruby, etc.) based on JSF model • Different approaches but common ideas • Same underlying representation • Same best practices for web site design
Other Major Topics • Session management • Modular web site design • Validation and error handling • Database manipulation • AJAX client-server communication • Security
Session Handling • Most web transactions are sessions consisting of series of requests and responses • Must associate steps if multiple clients Who submitted this request?
Modular Web Pages • Most pages on same site have similar content,layout, etc. • Goal: Write once, include in all pages • Tools: • Facelets (Java) • Master Pages (ASP)
Form Validation • Detecting user error • Built-in validation tools • Correcting user error • Providing information or how to correct error • Preventing user error • Field types/values • Error tolerance
Database Manipulation • Database driver provides access to databases • Built-in tools to manipulate/display data • JDBC: classes to query/manipulate database • Java Persistence API beans • ASP Data Source objects web container database server database database driver JSF page JPA bean JDBC DBMS
AJAX Asynchronous JavaScript and XML Based on JavaScript running in browser JavaScript code sends data to server, reads response Response is simple data instead of entire page JavaScript code then modifies page without re-rendering it completely Method call Web Page Server JavaScript Return value
Web Site Security • SSL/TLS for encryption • Certificates for server authentication • Secure programming against attacks • SQL injection • Cross-site scripting Server Request database server Client database Response Certificate
Programming Assignments • Introductory Assignments • Simple Java Server Faces web site • Simple Active Server Pages web site • Web Site Project (four parts) • Modular user interface design • Validation and error handling • Database access • Shopping cart and other support objects
Web Site Project • “E-Commerce” site of your design • You choose platform (JSF or ASP) Shipping/payment/ etc. information List of products List of products “Cart” of added products List of products List of products Individual Product pages with “add” option \Database of products and orders
Background Knowledge • Java or C++ (for JSP) • May want to get Java reference • I will cover basics in class • Visual Basic or C# (for ASP) • Basics covered in class • If more familiar with C# can get corresponding text • Basic html (including forms and tables) • Basic SQL