150 likes | 228 Views
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
E N D
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 result URL requestscript.jsp Script.jsp Response html page html
Example Amazon.com server Books.exe Cart.exe Purchase.exe • Charges credit card • Displays ‘thankyou’ • Link back to books • Shows books list • Add to cart • View cart button • Displays cart contents • Delete items • Purchase button
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 window Cart 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