Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Servlets.

Similar presentations


Presentation on theme: "Java Servlets."— Presentation transcript:

1 Java Servlets

2 What Are Servlets? Basically, a java program that runs on the server
Creates dynamic web pages

3 What Do They Do? Handle data/requests sent by users (clients)
Create and format results Send results back to user

4 Java Servlet Architetture dei Sistemi Web HTTP Client HTTP Server
Un Servlet è una classe Java in grado di ricevere in modo strutturato i parametri e generare, sullo Standard Output, la pagina html di risposta Request= “GET calc.sum?a=2;b=3” HTTP Client HTTP Server Response 2+3=5 Pipeline output (“2+3=5”) Servlet Fetch Standardizzazione della struttura ed astrazione attraverso le librerie Java Servlet Engine (Container) Loading class calc.sum Execute method main(2,3) Flush standard output to http

5 Who Uses Servlets? Servlets are useful in many business oriented websites … and MANY others

6 History Dynamic websites were often created with CGI
CGI: Common Gateway Interface Poor solution to today’s needs A better solution was needed

7 Servlets vs. CGI CGI Servlet Advantages Efficient
Single lightweight java thread handles multiple requests Optimizations such as computation caching and keeping connections to databases open Convenient Many programmers today already know java Powerful Can talk directly to the web server Share data with other servlets Maintain data from request to request Portable Java is supported by every major web browser (through plugins) Inexpensive Adding servlet support to a server is cheap or free Adapted from

8 Servlets vs. CGI CGI Advantages
CGI scripts can be written in any language Does not depend on servlet-enabled server

9 CGI Architetture dei Sistemi Web HTTP Client HTTP Server 2+3=5
CGI – Common Gateway Interface: Il Web Server passa le chiamate alle applicazioni realizzate secondo una logica simile ad una pipe unix Request= “GET sum.exe?a=2;b=3” HTTP Client HTTP Server Response 2+3=5 Pipeline output (“2+3=5”) Exec sum sh sum.exe 2 3 | …

10 Java Servlet Architetture dei Sistemi Web HTTP Client HTTP Server
Un Servlet è una classe Java in grado di ricevere in modo strutturato i parametri e generare, sullo Standard Output, la pagina html di risposta Request= “GET calc.sum?a=2;b=3” HTTP Client HTTP Server Response 2+3=5 Pipeline output (“2+3=5”) Servlet Fetch Standardizzazione della struttura ed astrazione attraverso le librerie Java Servlet Engine (Container) Loading class calc.sum Execute method main(2,3) Flush standard output to http

11 What Servlets Need JavaServer Web Development Kit (JSWDK)
Servlet capable server Java Server Pages (JSP) Servlet code

12 Java Server Web Development Kit
JSWDK Small, stand-alone server for testing servlets and JSP pages The J2EE SDK Includes Java Servlets 2.4

13 Servlet capable server
Apache Popular, open-source server Tomcat A “servlet container” used with Apache Other servers are available Adapted from cit /Lectures/21-servlets.ppt

14 Java Server Pages Lets you mix regular, static HTML pages with dynamically-generated HTML Does not extend functionality of Servlets Allows you to separate “look” of the site from the dynamic “content” Webpage designers create the HTML Servlet programmers create the dynamic content Changes in HTML don’t effect servlets Adapted from

15 <head> </head> <body> <% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> </body> </html> <html> <head> </head> <body> <b> JSP, ASP, CF, PHP - you name it, we support it! </b> </body> </html> </font>

16 <head> </head> <body> <% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> </body> </html> <html> <head> </head> <body> <b> JSP, ASP, CF, PHP - you name it, we support it! </b> </body> </html> </font>

17 <head> </head> <body> <% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> </body> </html> <html> <head> </head> <body> <b> JSP, ASP, CF, PHP - you name it, we support it! </b> </body> </html> </font>

18 <head> </head> <body> <% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> </body> </html> <html> <head> </head> <body> <b> JSP, ASP, CF, PHP - you name it, we support it! </b> </body> </html> </font>

19 Servlet Code Written in standard Java
Implement the javax.servlet.Servlet interface

20 package servlet_tutorials. PhoneBook; import javax. servlet
package servlet_tutorials.PhoneBook; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.sql.*; import java.net.*; public class SearchPhoneBookServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String query = null; String where = null; String firstname = null; String lastname = null; ResultSet rs = null; res.setContentType("text/html"); PrintWriter out = res.getWriter(); // check which if any fields in the submitted form are empty if (req.getParameter("FirstName").length() > 0) firstname = req.getParameter("FirstName"); else firstname = null; }

21 Thin clients (minimize download) Java all “server side”
Servlets Client Server

22 Main Concepts of Servlet Programming
Life Cycle Client Interaction Saving State Servlet Communication Calling Servlets Request Attributes and Resources Multithreading

23 Life Cycle Initialize Service Destroy

24 Life Cycle: Initialize
Servlet is created when servlet container receives a request from the client Init() method is called only once

25 Life Cycle: Service Any requests will be forwarded to the service() method doGet() doPost() doDelete() doOptions() doPut() doTrace()

26 Life Cycle: Destroy destroy() method is called only once Occurs when
Application is stopped Servlet container shuts down Allows resources to be freed

27 Client Interaction Request Response
Client (browser) sends a request containing Request line (method type, URL, protocol) Header variables (optional) Message body (optional) Response Sent by server to client response line (server protocol and status code) header variables (server and response information) message body (response, such as HTML) Adapted from

28 Saving State Session Tracking Cookies
A mechanism that servlets use to maintain state about a series of requests from the same user (browser) across some period of time. Cookies A mechanism that a servlet uses to have clients hold a small amount of state-information associated with the user.

29 Servlet Communication
To satisfy client requests, servlets sometimes need to access network resources: other servlets, HTML pages, objects shared among servlets at the same server, and so on.

30 Calling Servlets Typing a servlet URL into a browser window
Servlets can be called directly by typing their URL into a browser's location window. Calling a servlet from within an HTML page Servlet URLs can be used in HTML tags, where a URL for a CGI-bin script or file URL might be found.

31 Request Attributes and Resources
getAttribute getAttributeNames setAttribute Request Resources - gives you access to external resources getResource getResourceAsStream

32 Multithreading Concurrent requests for a servlet are handled by separate threads executing the corresponding request processing method (e.g. doGet or doPost). It's therefore important that these methods are thread safe. The easiest way to guarantee that the code is thread safe is to avoid instance variables altogether and instead use synchronized blocks.

33 Simple Counter Example
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleCounter extends HttpServlet { int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); count++; out.println("This servlet has been accessed " + count + " times since loading"); }

34 MultiThread Problems Solution - Use Synchronized Block!
Problem - Synchronization between threads count++; // by thread1 count++; // by thread2 out.println.. // by thread1 out.println.. // by thread2 Two Requests will get the same value of counter Solution - Use Synchronized Block! Synchronized Block Lock(Monitor)

35 Better Approach The approach would be to synchronize only the section of code that needs to be executed automically: PrintWriter out = res.getWriter(); synchronized(this) {     count++;     out.println("This servlet has been accessed " +              count + "times since loading"); } This reduces the amount of time the servlet spends in its synchronized block, and still maintains a consistent count.

36 Example: On-line Phone Book
Design

37 Example: On-line Phone Book

38 Search Form Java server Page Search_phone_book.jsp
<html> <head> <title>Search Phonebook</title> </head> <body bgcolor="#FFFFFF"> <p><b> Search Company Phone Book</b></p> <form name="form1" method="get" action="servlet/servlet_tutorials.PhoneBook.SearchPhoneBookServlet"> <table border="0" cellspacing="0" cellpadding="6"> <tr> <td >Search by</td> <td> </td> </tr> <tr> <td><b> First Name </b></td> <td> <input type="text" name="FirstName"> AND/OR</td> </tr> <tr> <td ><b> Last Name </b></td> <td > <input type="text" name="LastName"></td> </tr> <tr> <td ></td> <td > <input type="submit" name="Submit" value="Submit"> </td> </tr> </table> </form> </body> </html>

39 Example: On-line Phone Book

40 Display Results Java Server Page Display_search_results.jsp
<html> import ="java.sql.*" %> <jsp:useBean id="phone" class="servlet_tutorials.PhoneBook.PhoneBookBean"/> page buffer=35 %> page errorPage="error.jsp" %> <html> <head> <title>Phone Book Search Results</title> <meta http-equiv="Content-Type" content="text/html; charset=iso "> </head> <body bgcolor="#FFFFFF"> <b>Search Results</b> <p> <% String q = request.getParameter("query"); ResultSet rs = phone.getResultSet(q); %> <% if (rs.wasNull()) { %> "NO RESULTS FOUND" <% } else %> <table> <tr> <td> <div align="center">First Name</b></div> </td> <td> <div align="center">Last Name</font></b></div> </td> <td> <div align="center">Phone Number</font></b></div> </td> <td> <div align="center"> </font></b></div> </td> </tr> <% while(rs.next()) { %> <tr> <td> <%= rs.getString("first_name") %></td> <td><%= rs.getString("last_name") %></td> <td><%= rs.getString("phone_number") %> </td> <td> <%= rs.getString("e_mail") %> </td> </tr> <% } %> </table>

41 Servlet

42 Java Bean & Database linked

43 Conclusion

44 Questions? Comments?

45 References cit /Lectures/21-servlets.ppt


Download ppt "Java Servlets."

Similar presentations


Ads by Google