Servlets Written by Dr. Yaron Kanza, Edited by permission from author by Liron Blecher.

Slides:



Advertisements
Similar presentations
4 Copyright © 2005, Oracle. All rights reserved. Creating the Web Tier: Servlets.
Advertisements

1 Servlets Based on Notes by Dave Hollinger & Ethan Cerami Also, the Online Java Tutorial by Sun.
 2002 Prentice Hall. All rights reserved. Chapter 9: Servlets Outline 9.1 Introduction 9.2 Servlet Overview and Architecture Interface Servlet and.
Objectives Ch. D - 1 At the end of this chapter students will: Know the general architecture and purpose of servlets Understand how to create a basic servlet.
An introduction to Java Servlet Programming
1 Servlets Part 1 Representation and Management of Data on the Web.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 34 Servlets.
1 Servlets Representation and Management of Data on the Web.
June 1, 2000 Object Oriented Programming in Java (95-707) Advanced Topics 1 Lecture 10 Object Oriented Programming in Java Advanced Topics Servlets.
1 CS6320 – Servlet Structure and Lifecycle L. Grewe.
Servlet details Russell Beale. Servlet lifecycle The servlet container creates only one instance of each servlet Each use request handled with a separate.
Definition Servlet: Servlet is a java class which extends the functionality of web server by dynamically generating web pages. Web server: It is a server.
Servlets Compiled by Dr. Billy B. L. Lim. Servlets Servlets are Java programs which are invoked to service client requests on a Web server. Servlets extend.
Servlets Life Cycle. The Servlet Life Cycle A servlet life cycle can be defined as the entire process from its creation till the destruction. The following.
Servlets. Our Project 3-tier application Develop our own multi-threaded server Socket level communication.
HTTP HyperText Transfer Protocol Stateless request/response client-server protocol Requests: Method: GET, POST, HEAD, TRACE, OPTIONS, PUT, DELETE.
Java Servlets. What Are Servlets? Basically, a java program that runs on the server Basically, a java program that runs on the server Creates dynamic.
Java Server Pages B.Ramamurthy. Topics for Discussion 8/20/20152 Inheritance and Polymorphism Develop an example for inheritance and polymorphism JSP.
Java Servlet Technology. Introduction Servlets are Java programs that run on a Web server, handle HTTP requests and build Web pages Servlet specification.
Servlets Pranav Maydeo. What is a Servlet ? Servlets are modules of Java code that run in a server application to answer client requests. Servlets are.
Servlets. - Java technology for Common Gateway Interface (CGI) programming. - It is a Java class that dynamically extends the function of a web server.
Objectives Java Servlet Web Components
Java support for WWW Babak Esfandiari (sources: Qusay Mahmoud, Roger Impey, textbook)
CSC 2720 Building Web Applications
Chapter 5 Java Servlets. Objectives Explain the nature of a servlet and its operation Use the appropriate servlet methods in a web application Code the.
J2EE training: 1 Course Material Usage Rules PowerPoint slides for use only in full-semester, for-credit courses at degree-granting.
SKT-SSU IT Training Center Servlet and JSP. Chapter Three: Servlet Basics.
111 Java Servlets Dynamic Web Pages (Program Files) Servlets versus Java Server Pages Implementing Servlets Example: F15 Warranty Registration Tomcat Configuration.
CMPUT 391 – Database Management Systems Department of Computing Science University of Alberta CMPUT 391 Database Management Systems Web based Applications,
Web Server Programming 1. Nuts and Bolts. Premises of Course Provides general introduction, no in-depth training Assumes some HTML knowledge Assumes some.
Servlet Lifecycle Lec 28. Servlet Life Cycle  Initialize  Service  Destroy Time.
Chapter 3 Servlet Basics. 1.Recall the Servlet Role 2.Basic Servlet Structure 3.A simple servlet that generates plain text 4.A servlet that generates.
Java Servlets & Java Server Pages Lecture July 2013.
Java Servlets Lec 27. Creating a Simple Web Application in Tomcat.
1 Servlets Modified slides from Dr.Sagiv. 2 Introduction.
Java Servlet API CGI / HTTP Concepts Java Servlet API.
Introduction to Server-Side Web Development Introduction to Server-Side Web Development Session II: Introduction to Server-Side Web Development with Servlets.
L.MARIA MICHAEL VISUWASAM UNIT-4
1 Java Servlets l Servlets : programs that run within the context of a server, analogous to applets that run within the context of a browser. l Used to.
Middleware 3/29/2001 Kang, Seungwoo Lee, Jinwon. Description of Topics 1. CGI, Servlets, JSPs 2. Sessions/Cookies 3. Database Connection(JDBC, Connection.
Servlets.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, Responds oriented other.
1 Introduction to Servlets. Topics Web Applications and the Java Server. HTTP protocol. Servlets 2.
JS (Java Servlets). Internet evolution [1] The internet Internet started of as a static content dispersal and delivery mechanism, where files residing.
ORIGINAL BY WENDY LIU CURRENT API: Java Servlet and JSP 1.
Advanced Java Session 6 New York University School of Continuing and Professional Studies.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
Representation and Management of Data on the Web
Advanced Java Session 6 New York University School of Continuing and Professional Studies.
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 21 Java Servlets Wed. 11/22/00 based on material.
Server-Side Programming 1cs What is a Servlet A Java application that is being run by a Web server Can receive parameters in an HTTP request Generates.
HTTP protocol Java Servlets. HTTP protocol Web system communicates with end-user via HTTP protocol HTTP protocol methods: GET, POST, HEAD, PUT, OPTIONS,
Introduction To HTML Dr. Magdi AMER. HTML elements.
S ERVLETS Form Data 19-Mar-16. F ORM P ROCESSING You must have come across many situations when you need to pass some information from your browser to.
1 Lecture 8 George Koutsogiannakis/Summer 2011 CS441 CURRENT TOPICS IN PROGRAMMING LANGUAGES.
CS320 Web and Internet Programming Introduction to Java Servlets Chengyu Sun California State University, Los Angeles.
Distributed Web Systems Java Servlets Lecturer Department University.
CS122B: Projects in Databases and Web Applications Spring 2017
Introduction to Servlets
CS122B: Projects in Databases and Web Applications Winter 2017
Servlets.
Servlet Fudamentals.
Java Servlets By: Tejashri Udavant..
Chapter 26 Servlets.
CS122B: Projects in Databases and Web Applications Winter 2018
CS122B: Projects in Databases and Web Applications Spring 2018
Servlet APIs Every servlet must implement javax.servlet.Servlet interface Most servlets implement the interface by extending one of these classes javax.servlet.GenericServlet.
CS122B: Projects in Databases and Web Applications Winter 2019
Basic servlet structure
Presentation transcript:

Servlets Written by Dr. Yaron Kanza, Edited by permission from author by Liron Blecher

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

What is a Servlet A Java application that is being run by a Web server Can receive parameters in an HTTP request Generates an HTTP response Web browser Web server request response Servlet

What is a Servlet - Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Friendly Time</title> </head> <body> <h2>What is your name?</h2> <form method="get" action="time/show"> <p><input name="username" type="text" /> <input type="submit" value="send" /> </p> </form> </body> </html> The name of the application (Servlet) The name of a parameter

What is a Servlet - Example send send

What is a Servlet - Example import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class TimeServlet extends HttpServlet {   public void doGet(HttpServletRequest req, HttpServletResponse res)     throws ServletException, IOException {     res.setContentType("text/html");     PrintWriter out = res.getWriter();     Calendar cal = new GregorianCalendar();     String username = req.getParameter("username");     out.println("<html><head><title>Time</title></head>");     out.println(       "<body style=\"text-align:center\">\n<h2>Hello "         + username         + ".<br/>The time is: "         + "<span style=\"color:red\">"         + cal.get(Calendar.HOUR_OF_DAY)         + ":"         + cal.get(Calendar.MINUTE)         + ":"         + cal.get(Calendar.SECOND)         + "</span>"         + "</h2>\n</body>\n</html>");   } }

What is a Servlet - Example http://localhost:8080/Examples/time/show?username=Homer

Web Application File Structure time.html TimeServlet.class TimeServlet.java web.xml

Servlet web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <web-app> <servlet> <servlet-name>hello</servlet-name> <servlet-class>examples.HelloServlet</servlet-class> </servlet> <servlet-name>time</servlet-name> <servlet-class>TimeServlet</servlet-class> <servlet-mapping> <url-pattern>/hello</url-pattern> </servlet-mapping> <url-pattern>/time/show</url-pattern> </web-app>

Servlet Annotations As of Java EE 6 you can use Annotation instead of web.xml @WebServlet(name = "TestServlet", urlPatterns = {"/search"}) public class TestServlet extends HttpServlet { ... { @WebServlet – the annotation that defines the class as a servlet Name – the servlet name urlPattern – one or more patterns that will be handled by the servlet

service(request,response) The Servlet Interface Java provides the interface Servlet Specific Servlets implement this interface Whenever the Web server is asked to invoke a specific Servlet, it activates the method service() of an instance of this Servlet service(request,response) MyServlet (HTTP) request response

Servlet Hierarchy Servlet Generic Servlet HttpServlet YourOwnServlet Called by the servlet container to allow the servlet to respond to any request method service(ServletRequest, ServletResponse) Servlet Generic Servlet A generic, protocol-independent class, implementing Servlet HttpServlet doGet(HttpServletRequest , HttpServletResponse) doPost(HttpServletRequest HttpServletResponse) doPut doTrace … YourOwnServlet Called by the servlet container to allow the servlet to respond to a specific request method

doGet, doPost, doPut, doDelete, doTrace, doOptions or doHead Class HttpServlet Class HttpServlet handles requests and responses according to the HTTP protocol The service() method of HttpServlet checks the request method and calls the appropriate HttpServlet method: doGet, doPost, doPut, doDelete, doTrace, doOptions or doHead

Creating a Servlet Extend the class HTTPServlet Implement doGet or doPost (or both; also maybe others…) Both methods get: HttpServletRequest: methods for getting form (query) data, HTTP request headers, etc. HttpServletResponse: methods for setting HTTP status codes, HTTP response headers, and get an output stream used for sending data to the client Many times, we implement doPost by calling doGet, or vice-versa

Creating a Servlet – Hello World import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TextHelloWorld extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); out.println("Hello World"); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req, res);

Examples.servlets.DateServlet demo

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

Getting HTTP Headers Values of the HTTP request can be accessed through the HttpServletRequest object Methods for specific request information: getCookies, getContentLength, getContentType, getMethod, getProtocol, etc.

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

User Input in HTML Using HTML forms, we can pass parameters to Web applications <form action=… method=…> …</form> comprises a single form action: the address of the application to which the form data is sent (should be relative to the current page) method: the HTTP method to use when passing parameters to the application (e.g. get or post)

The <input> Tag Inside a form, INPUT tags define fields for data entry Standard input types include: buttons, checkboxes, password fields, radio buttons, text fields, image-buttons, text areas, hidden fields, etc. Each one associates a single (string) value with a named parameter

Getting user input in the servlet Use the following HTTPServleRequest methods to get the user input: getParameter(“<name of parameter>”); getParameterNames – returns an enumeration of all the parameters that came on the request getParameterMap – return a map of all the parameters and their values

Examples.htmlinput demo

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

Setting Response Header Setting Response Headers Class HTTPServletResponse provides setters for some specific headers: setContentType setContentLength automatically set if the entire response fits inside the response buffer setDateHeader setCharacterEncoding

The Response Content Buffer The response body is buffered Data is sent to the client when the buffer is full or when the buffer is explicitly flushed Once the first data chunk is sent to the client, the response is committed You cannot set the response line nor change the headers. Such operations are either ignored or cause an exception to be thrown

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

Servlet Life Cycle When a URL that a servlet is mapped to is requested, the server loads the Servlet class and initializes one instance of it Each client request is handled by the Serlvet instance in a separate thread The server can remove the Servlet The Servlet can remain loaded to handle additional requests

Servlet Life Cycle – con’t When the Servlet in instantiated, its method init() is invoked (in our case, by Tomcat) External parameters can be provided Upon a request, its method service() is invoked Before the Servlet removal, its method destroy() is invoked

Servlet Life Cycle – con’t Deal with requests: call the service method Calling the init method Destroy the Servlet: call the destroy method Servlet Instance ServletConfig In our case by servlet we refer to any class extending HttpServlet Garbage Collection Servlet Class

Servlet.getServletConfig() Initializing Servlets The method init has a parameter of type ServletConfig ServletConfig has methods to get external initialization parameters (getInitParameter()) In Tomcat, these parameters are set in web.xml To make initializations, override init() and not init(ServletConfig) The former is automatically called by the latter after performing default initializations Servlet.getServletConfig() If we use init(), how can we obtain a reference to the ServletConfig ?

A web.xml Example <web-app> … <servlet> <servlet-name>InitExample</servlet-name> <servlet-class>ServletInit</servlet-class> <init-param> <param-name>login</param-name> <param-value>Homer</param-value> </init-param> </servlet> </web-app>

Loading a Servlet on Startup A Servlet is usually loaded when it is first being called You can set Tomcat to load a specific Servlet on startup in the Servlet declaration inside web.xml <servlet> <servlet-name>InitExample</servlet-name> <servlet-class>ServletInit</servlet-class> <load-on-startup/> </servlet>

Examples.servlets demo

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

Servlet Context Allows servlets that belong to the same application to share data and communicate For instance, can be used to store details for a JDBC connection (details that are shared by different servlets) Allows setting and getting attributes Provides information about the server Can be used for writing messages to a log file Use: getServletContext().getAttribute(), and getServletContext().setAttribute() to add objects to a map which is shared between all servlets

A web.xml Example <web-app> … <context-param> <param-name>db-server</param-name> <param-value>db.mta.ac.il</param-value> </context-param> <servlet> <servlet-name>InitExample</servlet-name> <servlet-class>ServletInit</servlet-class> <init-param> <param-name>login</param-name> <param-value>Homer</param-value> </init-param> </servlet> </web-app>

Destroying Servlets The server may remove a loaded Servlet asked to do so by an administrator (e.g. Server shutdown) Servlet was idle for a long time server needs to free resources The server removes a Servlet only if all threads have finished or a grace period has passed Before removing, calls the destroy() method can perform cleanup, e.g., close database connections Is it possible for the Servlet to end without its destroy being called? You can do it if you kill the process explicitly

Thread Synchronization Multiple threads are accessing the same Servlet object at the same time Therefore, you have to deal with concurrency init() and destroy() are guaranteed to be executed only once (before/after all service executions)

Examples.servletcontext demo

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

Request Dispatcher Servlets have the abilities to ‘call’ each other. Since no servlet has a reference to another servlet, the way to perform this ‘call’ is by using the Request Dispatcher. There are 2 ways to make this ‘call’: Forward – will forward the request and response to another servlet and after the other servlet has finished processing the request, the response will be returned to the client (without returning to the calling servlet) Include – will forward the request and response to another servlet and after the other servlet has finished processing the request, it will return to the calling servlet

Request Dispatcher Before forwarding/including other servlets, it is possible to modify the request (for example, add/remove/update parameters) To get the Request Dispatcher call the servlet context: getServletContext(). getRequestDispatcher(“/otherServletPath”) Tip! When including another servlet make sure the other servlet does not closes its response writer when it finishes.

Examples.servletcontext demo

Agenda What is a Servlet Handling HTTP Requests User Input in HTML Handling HTTP Response Servlet Life Cycle Servlet Context Request Dispatcher Sessions

Sessions HTTP is stateless, hence, for implementing sessions we need to send back and forth a session identifier The session identifier is generated by the server and being sent to the client Each request that is part of the session is sent back to the server Sending session ids By using cookies URL rewriting Hidden form fields

Does the server keep the session object forever? Session Objects Does the server keep the session object forever? Generate a new session id Client 3 Send response with a cookie saying the session id is 3 The following requests will include session id 3 and will be recorded by the server Server Session table

HttpSession Information related to a session is encapsulated in HttpSession objects Data is set and retrieved by setAttribute and getAttribute

Examples.poll demo

Links Tutorial: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html Core Servlets Tutorials: http://www.coreservlets.com/ http://courses.coreservlets.com/Course-Materials/csajsp2.html Overview: http://alvinjayreyes.com/2013/07/27/a-brief-overview-of-jee6/