310 likes | 613 Views
Servlets and Java Server Pages. Object-Oriented Programming V22.0470 Written by: Haytham Allos (Instructor) New York University (NYU). Static content. Web Server delivers contents of a file (html). 2. Web Server reads file from disk. 1. Browser sends request to Web Server. Web Server.
E N D
Servlets and Java Server Pages Object-Oriented Programming V22.0470 Written by: Haytham Allos (Instructor) New York University (NYU)
Static content • Web Server delivers contents of a file (html) 2. Web Server reads file from disk 1. Browser sends request to Web Server Web Server browser 3. Web Server sends HTML to Browser
Dynamic Content • CGI(Common Gateway Interface)program generates HTML that is returned to Browser 2. Web Server loads CGI program from disk 1. Browser sends request to Web Server Web Server browser 3. Web Server starts CGI program CGI Program 5. Web Server sends HTML to Browser 4. CGI program generates and returns HTML Server User Computer
CGI has issues • performance • Web Server must create new process for each request, limits scalability • maintenance • presentation and business logic tightly coupled
Alternatives • FastCGI - persistent process • mod_perl - perl interpreter embedded in Apache web server • Server Extensions - Netscape(NSAPI), Microsoft(ISAPI) • Active Server Pages
Java Servlets • replaces CGI • a Java program • runs in Servlet Container or Engine • generates dynamic content(HTML, XML) • now part of J2EE architecture • good performance
Java Servlets Continued... • Advantages • generally faster, more efficient than CGI • runs as a thread not an OS process • Convenience - Java API’s • secure - does not run in a shell • portable, vendor independent
Java Servlet Diagram • Extends Web Server 3. Servlet Engine runs the servlet Servlet Container 1. Browser sends request to Web Server 2. Web Server sends request to Servlet Engine Servlet Web Server TopLink 6. Web Server sends HTML to Browser browser Servlet DB jdbc Servlet 5. Servlet generates and returns HTML 4. Servlet can access database
Simple Servlet public class HelloWorld extends HttpServlet { public void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response. setContentType(" text/ html"); PrintWriter out = response. getWriter(); out. println( "< HTML>" ); out. println( "< HEAD>< TITLE> Hello World</ TITLE></ HEAD>”); out. println( "< BODY>”); out. println( "< H1> Hello World</ H1>”); out. println( "</ BODY></ HTML>"); } }
Servlet Issues • servlet generating HTML results in presentation and business logic tightly coupled with accompanying maintenance issues.
Java Server Pages(JSP) • Built on Servlet technology • simplified way to create pages containing dynamically generated content. • converted into servlet, compiled and run as a normal servlet • timestamp checked at specified interval, regenerated if necessary.
Java Server Pages(JSP) continued... • jsp page contains • directives, comments, fixed template data (HTML, XML), jsp expression or tags, scriptlets
Java Server Pages(JSP) continued... • Can be invoked from a browser via URL or from a Servlet • Java code can be in the jsp source • keep simple • Java code can be in a Java Bean • separates User Interface from Business Logic • Used via UseBean tag
Java Server Page Diagram jsp 3. JSP Engine generates servlet 4. Servlet Container runs the JSP (Servlet) 1. Browser sends request to Web Server 2. Web Server sends request to Servlet Engine Servlet Container JSP Engine Servlet Web Server Servlet source code Java Bean TopLink browser Servlet DB Java Compiler jdbc Servlet JSP (Servlet) 6. JSP(Servlet) returns HTML 6. Web Server sends HTML to Browser 5. JSP interacts with Java Bean(s) and/or Servlets
Simple Java Server Page <HTML> <BODY> Hello World. You are using a computer called <% request.getRemoteHost() %>! </BODY> </HTML>
MVC Architecture • Model: data (java bean) • View: presentation / user interface (jsp) • Controller: directs things / traffic cop (servlet) Servlet(controller) Browser 1 2 instantiate request DB 3 JSP(View) Java Bean(Model) 5 4 response Servlet Container
Servlet/JSP specifications • Servlet 2.0 JSP 1.0 • Servlet 2.2 JSP 1.1 • Servlet 2.3 JSP 1.2 • Draft stage • J2EE
Resources • http://java.sun.com/products/jsp • http://java.sun.com/products/servlet • Books • O’Reilly - http://www.ora.com/ • Prentice Hall - http://vig.prenhall.com/ • Addison-Wesley - http://www.aw.com
Servlet/JSP Fundamentals • Servlets like any other Java class, except: • Must extend HttpServlet • Must contain a doPost or doGet method • Come equipped to handle the laborious points of http • Http requests and responses are made into Java objects • Best alternative to traditional CGI
Servlet/JSP Fundamentals • Anatomy of a Servlet • Optional init method, executes the first time a servlet is invoked • doGet/doPost methods execute when request is made • method signature accepts http request and response as parameters • Optional destroy method • www.servlets.com Samples
Servlet/JSP Fundamentals • One instance of Servlet for each Servlet name • Same instance serves all requests to that name • Instance members persist across all requests to that name. • Local /block variables in doPost & doGet are unique to each request
JSP as presentation model Servlet Performs the hard work Helper objects Persistent “bean” objects DB Connections, etc App logic Simple calls to bean properties Client request JSP Unsuccessful results JSP Successful results Subsequent client request Presentation No servlet need if bean still set
JSP alternatives • JSP can still result in unwieldy code creeping into HTML • Most HTML editors don’t like it • JSP:Taglibs and other “templating” programs may help. • Much depends on how HTML documents are produced and what business logic you are presenting
In Depth Examples • Encapsulation of SQL calls • List results and view thread detail • Post reply and add to favorites • Set all bean properties w/ request • Edit users • Query central
Pitfalls, surprises, and work-arounds • HTTP works via requests and responses. Client caching of responses poses a problem. • Guard against evil use of the “back” button • Don’t assume everyone’s client will respond properly to the “defaults” • Guard against easy spoofs of any GET request which alters data.