Server Side:
JSP and Java Servlets
Chris North
cs3724: HCI
Client-side
• Method:
• Download and run program on client
• Examples:
• Java applets, javascript, activeX, css, plugins,
• Good for:
• dynamic interaction,
• Reducing server load
• Animations, processing intensive
• Server security, crash protection
Server-side
• Method:
• Dynamically generated web pages on server
• Download resulting html page to client
• Examples:
• JSP, Java Servlets, php, asp, cgi, perl, includes, C
• Good for:
• database interaction
• Broad client compatibility, customize to browser/OS
• Data synchro, collaborative apps
• Access control
• Small downloads
• No installs
• Code security, hack protection
• Client security
• Screen scraping
• simple interaacations
Example: Data-Driven Websites
• Websites that provide access to:
• Lots o data
• Dynamic data Database
• Customized views of data
• E.g. [Link]
• Scripts map data to html html
Server-side processing
Client (Browser) Server (Web server)
URL request
1. User click 2. Receive HTTP request
[Link]
3. Execute script
[Link]
Response
5. Display html 4. Send html result
html page
html
Example
[Link] server
[Link] [Link] [Link]
•Shows books list •Displays cart contents •Charges credit card
•Add to cart •Delete items •Displays ‘thankyou’
•View cart button •Purchase button •Link back to books
Problems
• Many simultaneous users
• No state data maintained
• Client not in sync with server (e.g. back button)
[Link] [Link] [Link]
Different than GUI programming!
• One user (per executable)
• ‘Global’ state data
• Client = server
[Link]
Books window
Cart window
Purchase window
Problems
• [Link] starts from scratch each time
• Each page request is completely independent
• No state data maintained between requests
» Who is the user?
» What is his data?
» Where is he in the ‘application’?
• How to maintain state info across page accesses?
• Pile all state data into hidden form items
• Cookies
• Store state data in a database, index by unique user id
Java Servlets
• Html:
• Link: URL/servlet
• Form post
• Servlet
• Init()
• Destroy()
• doGet()
• doPost()
example
[Link](“<html><body>”);
[Link](“<p>hello world”);
[Link](new [Link]( ));
[Link](“</body></html>”);
• Browser recieves:
<html><body>
Hello world 2:00pm, March 28, 2002
</body></html>
Java Server Pages (JSP)
• Html + code
• New tags <% %> and <%= %>
• [Link]:
<html><body>
Hello world <%= new [Link]() %>
</body></html>
• Client receives:
<html><body>
Hello world 2:00pm, March 28, 2002
</body></html>
Processing form input
• Global object: request, session
<% [Link](“username”,
[Link](“UserName”)) %>
<html><body>
Thanks for giving us your name, <%=
[Link](“username”) %>
</body></html>
Session Data
• Global object: session
<html><body>
Hello,
<%= [Link](“username”) %>
</body></html>
• Client receives:
<html><body>
Hello, Chris
</body></html>
JSP objects
• Application
• Config
• Out
• Request
• Response
• Session