Session 2 notes - FAU College of Engineering
Download
Report
Transcript Session 2 notes - FAU College of Engineering
Weekend MS CS Program
Internet and Web Technologies
COT 5930
Web Project Development - Ajax
Dr. Roy Levow, Associate Chair & Professor
Email: [email protected]
Phone: 954-236-1170
Web: http://www.cse.fau.edu/~roy
Lesson Plan, Session 2
1.
2.
3.
4.
5.
6.
7.
8.
HTTP Request
AJAX design
MVC pattern
Laboratory 1
MVC in action
Server interaction
Dynamic double combo
Type-ahead suggest
HTTP Request
W3Schools AJAX Tutorial
Observe different code for MSIE, Mozilla
/ Safari, and Opera (not)
HTTP
Request is not standard
Callback functions
Passed as parameter to another function
Called by that function on completion of
some activity or to provide some service
xmlHttp=GetXmlHttpObject(stateChanged)
stateChanged is called on completion of
object load
HTTP Request (cont.)
Example: callbacktest.html
Callback assigned to
onreadystatechange
is called on each state change
Testing: What’s wrong?
Observe different behavior under IE and
Firefox (Mozilla)
AJAX Design
Patterns
Common design elements for frequently
used components or operations
Refactoring
Write simple code first
Then reorganize to separate patterns for
reuse
Refactoring Example
Refactoring content loader
Encapsulate code in a class using
“factory” pattern object
Functionality
sendRequest()
gets requestor from
intHttpRequest() and assigns hard-coded
onReadyState() to process response
See ContentLoader.js
Model-View-Controller Pattern
Model represents problem domain
View presents things to user
Controller provides all interactions
between model and view
Enables complete separation of model
and view
Libraries
Cross-browser libraries
Provide common functionality across
browsers
X library: general DHTML support
Sarissa: XML JavaScript manipulation
Prototype: Stronger JavaScript O-O
support
Widgets and Widget Suites
Scriptaculous
UI components built on Prototype
Animated visual effects
Drag and drop
Rico
UI components built on Prototype
Customizable effects
Drop and drag
Rico Accordion Example
accordion.html
Note $(…) returns a reference to the
accordion object
Laboratory Exercise 1
JavaScript,DOM, CSS
Create a numeric entry keyboard
Start with a table
keypad.html
Add actions with external .js files
Redesign the table using CSS rather than
table
Application Frameworks
DWR, JSON-RPC, SAJAX
Backbase Presentation Server
Server-side but in different languages
Uses custom tags to markup UI
components
Echo2
Java-based server engine
Generates
UI components
Ruby-on-Rails
Web framework written in Ruby
MVC Example 1
Musical keyboard
Musical.html
CSS for keyboard
Dynamic assignment of functionality
assignKeys()
Full separation
musicaldynKeys.html
Observer Pattern
Watches for user input
Triggers response
mousemat.html
What’s wrong?
Mousemat observer
Server Interaction
Two roles
Deliver application to client
Respond to client requests
Coding may be in any language
supported by the server
PHP, Java, ASP
ASP.NET, Ruby (newer)
Server-side Design Patterns
Naïve web server
Without framework
Server with MVC framework such as
Model2
Component-based frameworks
Provide either general or AJAX-specific
tools / widgets
Service-oriented architectures
Designed to provide service by
interaction over web
Boarder than SOAP based Web Services
Data Exchange
Client-only interactions
Server request / response
Simple responses processed on client
planent browser simple version
Add content-centric interaction
Response behavior scripts come from
server
planets.html
Dynamic Double Combo
One selection option depends on
another
Example: a first drop-down list
determines the choices in the second
Client-side solution needs all data
Server-side solution loads new page
with each selection
AJAX solution builds second dropdown based on selection in first
Dynamic Double Combo
Implementation
Need to define XML response format
Server creates response
Client creates second drop-down
dynamically
DoubleCombo.htm
DoubleCombo_Static.htm
DoubleComboMulti.htm
Type-ahead Suggest
Characteristics
Google suggest
Application responds as you type
1.
2.
3.
4.
You type a character
Type-ahead passes request to server
Server responds
Client updates display
Type-ahead Suggest
Issues
Posting every keystroke
Not caching data
Possible slow response time (dial-ups)
Too many results
Fancy interface
Fast typist (ahead of responses)
Type-ahead Suggest
TypeAhead.htm
TypeAhead_static.htm