Download presentation
Presentation is loading. Please wait.
Published byGeorgiana Bruce Modified over 9 years ago
1
Java Servlets
2
What Are Servlets? Basically, a java program that runs on the server Basically, a java program that runs on the server Creates dynamic web pages Creates dynamic web pages
3
What Do They Do? Handle data/requests sent by users (clients) Handle data/requests sent by users (clients) Create and format results Create and format results Send results back to user Send results back to user
4
Who Uses Servlets? Servlets are useful in many business oriented websites Servlets are useful in many business oriented websites … and MANY others … and MANY others
5
History Dynamic websites were often created with CGI Dynamic websites were often created with CGI CGI: Common Gateway Interface CGI: Common Gateway Interface Poor solution to today’s needs Poor solution to today’s needs A better solution was needed A better solution was needed
6
Servlets vs. CGI Servlet Advantages Servlet Advantages Efficient Efficient Single lightweight java thread handles multiple requests Single lightweight java thread handles multiple requests Optimizations such as computation caching and keeping connections to databases open Optimizations such as computation caching and keeping connections to databases open Convenient Convenient Many programmers today already know java Many programmers today already know java Powerful Powerful Can talk directly to the web server Can talk directly to the web server Share data with other servlets Share data with other servlets Maintain data from request to request Maintain data from request to request Portable Portable Java is supported by every major web browser (through plugins) Java is supported by every major web browser (through plugins) Inexpensive Inexpensive Adding servlet support to a server is cheap or free Adding servlet support to a server is cheap or free
7
Servlets vs. CGI CGI Advantages CGI Advantages CGI scripts can be written in any language CGI scripts can be written in any language Does not depend on servlet-enabled server Does not depend on servlet-enabled server
8
What Servlets Need JavaServer Web Development Kit (JSWDK) JavaServer Web Development Kit (JSWDK) Servlet capable server Servlet capable server Java Server Pages (JSP) Java Server Pages (JSP) Servlet code Servlet code
9
Java Server Web Development Kit JSWDK JSWDK Small, stand-alone server for testing servlets and JSP pages Small, stand-alone server for testing servlets and JSP pages The J2EE SDK The J2EE SDK Includes Java Servlets 2.4 Includes Java Servlets 2.4
10
Servlet capable server Apache Popular, open-source server Popular, open-source server Tomcat Tomcat A “servlet container” used with Apache A “servlet container” used with Apache Other servers are available
11
Java Server Pages Lets you mix regular, static HTML pages with dynamically-generated HTML Lets you mix regular, static HTML pages with dynamically-generated HTML Does not extend functionality of Servlets Does not extend functionality of Servlets Allows you to separate “look” of the site from the dynamic “content” Allows you to separate “look” of the site from the dynamic “content” Webpage designers create the HTML Webpage designers create the HTML Servlet programmers create the dynamic content Servlet programmers create the dynamic content Changes in HTML don’t effect servlets Changes in HTML don’t effect servlets
12
<% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> JSP, ASP, CF, PHP - you name it, we support it!
13
<% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> JSP, ASP, CF, PHP - you name it, we support it!
14
<% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> JSP, ASP, CF, PHP - you name it, we support it!
15
<% // jsp sample code out.println(" JSP, ASP, CF, PHP - you name it, we support it!"); %> JSP, ASP, CF, PHP - you name it, we support it!
16
Servlet Code Written in standard Java Written in standard Java Implement the javax.servlet.Servlet interface Implement the javax.servlet.Servlet interface
17
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; }
18
Main Concepts of Servlet Programming Life Cycle Life Cycle Client Interaction Client Interaction Saving State Saving State Servlet Communication Servlet Communication Calling Servlets Calling Servlets Request Attributes and Resources Request Attributes and Resources Multithreading Multithreading
19
Life Cycle Initialize Initialize Service Service Destroy Destroy
20
Life Cycle: Initialize Servlet is created when servlet container receives a request from the client Servlet is created when servlet container receives a request from the client Init() method is called only once Init() method is called only once
21
Life Cycle: Service Any requests will be forwarded to the service() method Any requests will be forwarded to the service() method doGet() doGet() doPost() doPost() doDelete() doDelete() doOptions() doOptions() doPut() doPut() doTrace() doTrace()
22
Life Cycle: Destroy destroy() method is called only once destroy() method is called only once Occurs when Occurs when Application is stopped Application is stopped Servlet container shuts down Servlet container shuts down Allows resources to be freed Allows resources to be freed
23
Client Interaction Request Request Client (browser) sends a request containing Client (browser) sends a request containing Request line (method type, URL, protocol) Request line (method type, URL, protocol) Header variables (optional) Header variables (optional) Message body (optional) Message body (optional) Response Response Sent by server to client Sent by server to client response line (server protocol and status code) response line (server protocol and status code) header variables (server and response information) header variables (server and response information) message body (response, such as HTML) message body (response, such as HTML)
24
Thin clients (minimize download) Thin clients (minimize download) Java all “server side” Java all “server side” Client Server Servlets
25
Saving State Session Tracking Session Tracking A mechanism that servlets use to maintain state about a series of requests from the same user (browser) across some period of time. A mechanism that servlets use to maintain state about a series of requests from the same user (browser) across some period of time. Cookies Cookies A mechanism that a servlet uses to have clients hold a small amount of state- information associated with the user. A mechanism that a servlet uses to have clients hold a small amount of state- information associated with the user.
26
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. 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.
27
Calling Servlets Typing a servlet URL into a browser window Typing a servlet URL into a browser window Servlets can be called directly by typing their URL into a browser's location window. Servlets can be called directly by typing their URL into a browser's location window. Calling a servlet from within an HTML page 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. Servlet URLs can be used in HTML tags, where a URL for a CGI-bin script or file URL might be found.
28
Request Attributes and Resources Request Attributes Request Attributes getAttribute getAttribute getAttributeNames getAttributeNames setAttribute setAttribute Request Resources - gives you access to external resources Request Resources - gives you access to external resources getResource getResource getResourceAsStream getResourceAsStream
29
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. 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. The easiest way to guarantee that the code is thread safe is to avoid instance variables altogether and instead use synchronized blocks.
30
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleCounter extends HttpServlet { public class SimpleCounter extends HttpServlet { int count = 0; int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); res.setContentType("text/plain"); PrintWriter out = res.getWriter(); PrintWriter out = res.getWriter(); count++; count++; out.println("This servlet has been accessed " + count + " times since loading"); out.println("This servlet has been accessed " + count + " times since loading"); } } } Simple Counter Example
31
MultiThread Problems Problem - Synchronization between threads 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! Solution - Use Synchronized Block! Synchronized Block Synchronized Block Lock(Monitor) Lock(Monitor)
32
Better Approach The approach would be to synchronize only the section of code that needs to be executed automically: 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.
33
Example: On-line Phone Book Design Design
34
Example: On-line Phone Book
35
Search Form Search Phonebook Search Company Phone Book Search by First Name AND/OR Last Name Search Phonebook Search Company Phone Book Search by First Name AND/OR Last Name Java server Page Search_phone_book.jsp
36
Example: On-line Phone Book
37
Display Results Phone Book Search Results Search Results "NO RESULTS FOUND" First Name Last Name Phone Number Email Phone Book Search Results Search Results "NO RESULTS FOUND" First Name Last Name Phone Number Email Java Server Page Display_search_results.jsp
38
Servlet
39
Java Bean & Database linked
40
Conclusion
41
Questions? Comments?
42
References http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Overview.html http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Overview.html http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Overview.html www.cis.upenn.edu/~matuszek/ cit597-2004/Lectures/21-servlets.ppt www.cis.upenn.edu/~matuszek/ cit597-2004/Lectures/21-servlets.ppt http://learning.unl.ac.uk/im269/lectures/week6servletsp1.ppt http://learning.unl.ac.uk/im269/lectures/week6servletsp1.ppt http://learning.unl.ac.uk/im269/lectures/week6servletsp1.ppt http://java.sun.com/docs/books/tutorialNB/download/tut-servlets.zip http://java.sun.com/docs/books/tutorialNB/download/tut-servlets.zip http://www.webdevelopersjournal.com/articles/intro_to_servlets.html http://www.webdevelopersjournal.com/articles/intro_to_servlets.html
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.