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
• Customized views of data
• E.g. ebay.com
• Scripts map data to html
Database
html
Server-side processing
Client (Browser)
1. User click
5. Display html
Server (Web server)
2. Receive HTTP request
3. Execute script
4. Send html resultResponsehtml page
URL requestscript.jsp
html
Script.jsp
Example
Books.exe Cart.exe Purchase.exe
•Shows books list•Add to cart
•View cart button
•Displays cart contents•Delete items
•Purchase button
•Charges credit card•Displays ‘thankyou’
•Link back to books
Amazon.com server
Problems
• Many simultaneous users
• No state data maintained
• Client not in sync with server (e.g. back button)
Books.exe Cart.exe Purchase.exe
…
Different than GUI programming!
• One user (per executable)
• ‘Global’ state data
• Client = server
Shopping.exe
Books windowCart window
Purchase window
Problems
• Myscript.exe 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
Out.println(“<html><body>”);
Out.println(“<p>hello world”);
Out.println(new java.util.Date( ));
Out.println(“</body></html>”);
• Browser recieves:<html><body>
Hello world 2:00pm, March 28, 2002
</body></html>
Java Server Pages (JSP)
• Html + code• New tags <% %> and <%= %>• Myscript.jsp:<html><body>Hello world <%= new java.util.Date() %></body></html>
• Client receives:<html><body>Hello world 2:00pm, March 28, 2002</body></html>
Processing form input
• Global object: request, session
<% session.putValue(“username”, request.getParameter(“UserName”)) %>
<html><body>
Thanks for giving us your name, <%= session.getValue(“username”) %>
</body></html>
Session Data
• Global object: session<html><body>
Hello,
<%= session.getValue(“username”) %>
</body></html>
• Client receives:<html><body>
Hello, Chris
</body></html>
JSP objects
• Application
• Config
• Out
• Request
• Response
• Session