Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.