Servlet
Servlet
Servlet
• Servlet technology is used to create a web
application (resides at server side and
generates a dynamic web page).
• Servlet technology is robust and scalable
because of java language. Before Servlet, CGI
(Common Gateway Interface) scripting
language was as a server-
common
programming language. side
Department of Computer
Engineering
Department of Computer
Engineering
Life Cycle of a Servlet
• The web container maintains the life cycle of a
servlet instance. Let's see the life cycle of the
servlet:
– Servlet class is loaded.
– Servlet instance is created.
– init method is invoked.
– service method is invoked.
– destroy method is invoked.
Department of Computer
Engineering
Servlet Life Cycle
there are three states of a servlet: new (init()), ready (service) and end
(destroy). The servlet is in new state if servlet instance is created. After invoking
the init() method, Servlet comes in the ready state. In the ready state, servlet
performs all the tasks. When the web container invokes the destroy() method,
it shifts to the end state.
Department of Computer
Engineering
1) Servlet class is loaded
• The classloader is responsible to load the
servlet class. The servlet class is loaded when
the first request for the servlet is received by
the web container.
2) Servlet instance is created
• The web container creates the instance of a
servlet after loading the servlet class. The
servlet instance is created only once in the
servlet life cycle.
Department of Computer
Engineering
3) init method is invoked
• The web container calls the init method only
once after creating the servlet instance. The
init method is used to initialize the servlet. It is
the life cycle method of the
javax.servlet.Servlet interface.
• Syntax:
public void init(ServletConfig config) throws ServletException
Department of Computer
Engineering
4) service method is invoked
• The web container calls the service method each time
when request for the servlet is received. If servlet is
not initialized, it follows the first three steps as
described above then calls the service method. If
servlet is initialized, it calls the service method. Notice
that servlet is initialized only once.
• syntax :
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException
Department of Computer
Engineering
5) destroy method is invoked
• The web container calls the destroy method
before removing the servlet instance from the
service. It gives the servlet an opportunity to
clean up any resource for example memory,
thread etc.
• syntax : public void destroy()
Department of Computer
Engineering
Servlet API
• The javax.servlet and javax.servlet.http packages
represent interfaces and classes for servlet api.
• The javax.servlet package contains many
interfaces and classes that are used by the servlet
or web container. These are not specific to any
protocol.
• The javax.servlet.http package contains
interfaces and classes that are responsible for
http requests only.
Department of Computer
Engineering
Interfaces in javax.servlet package
• There are many interfaces in javax.servlet package. They are as
follows:
• Servlet
• ServletRequest
• ServletResponse
• RequestDispatcher
• ServletConfig
• ServletContext
• SingleThreadModel
• Filter
• FilterConfig
• FilterChain
• ServletRequestListener
• ServletRequestAttributeListener
• ServletContextListener
• ServletContextAttributeListener
Department of Computer
Engineering
Classes in javax.servlet package
• There are many classes in javax.servlet package.
They are as follows:
• GenericServlet
• ServletInputStream
• ServletOutputStream
• ServletRequestWrapper
• ServletResponseWrapper
• ServletRequestEvent
• ServletContextEvent
• ServletRequestAttributeEvent
• ServletContextAttributeEvent
• ServletException
• UnavailableException
Department of Computer
Engineering
Servlet Interface
• Servlet interface provides commonbehaviorto
all the servlets.Servlet interface defines
methods that all servlets must implement.
Department of Computer
Engineering
Methods of Servlet interface
Method Description
public void init(ServletConfig config) initializes the servlet. It is the life cycle
method of servlet and invoked by the web
container only once.
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.print("<html><body>");
out.print("<b>hello simple servlet</b>");
out.print("</body></html>");
}
public void destroy()
{System.out.println("servlet is
destroyed");}
}public ServletConfig
Department of Computer getServletConfig()
15
{return config;}
Engineering
ServletConfig Interface
An object of ServletConfig is created by the web
container for each servlet. This object can be
used to get configuration information from
web.xml file.
If the configuration information is modified from
the web.xml file, we don't need to change the
servlet
Department of Computer
Engineering
Methods of ServletConfig interface
• public String getInitParameter(String name):
Returns the parameter value for the
specified parameter name.
• public Enumeration getInitParameterNames():
Returns an enumeration of all the initialization
parameter names.
• public String getServletName(): Returns the
name of the servlet.
• public ServletContext getServletContext():
Returns an object of ServletContext.
Department of Computer
Engineering
Syntax to provide the initialization
parameter for a servlet
<web-app>
<servlet>
......
<init-param>
<param-name>parametername</param-name>
<param-value>parametervalue</param-value>
</init-param>
......
</servlet>
</web-app>
Department of Computer
Engineering
//DemoServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
ServletConfig
config=getServletConfig();
String driver=config.getInitParameter("driver");
out.print("Driver is: "+driver);
out.close();
}
}
Department of Computer
Engineering
//web.xml
<web-app>
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>DemoServlet</servlet-class>
<init-param>
<param-name>driver</param-name>
<param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
</web-app>
Department of Computer
Engineering
ServletContext Interface
• An object of ServletContext is created by the
web container at time of deploying the
project. This object can be used to get
configuration information from web.xml file.
There is only one ServletContext object per
web application.
Department of Computer
Engineering
Usage of ServletContext Interface
• There can be a lot of usage of ServletContext object. Some of them are as
follows:
• The object of ServletContext provides an interface between the container
and servlet.
• The ServletContext object can be used to get configuration information
from the web.xml file.
• The ServletContext object can be used to set, get or remove attribute from
the web.xml file.
• The ServletContext object can be used to provide inter-application
communication.
Department of Computer
Engineering
Commonly used methods of
ServletContext interface
• public String getInitParameter(String name):Returns the
parameter value for the specified parameter name.
• public Enumeration getInitParameterNames():Returns the
names of the context's initialization parameters.
• public void setAttribute(String name,Object object):sets
the given object in the application scope.
• public Object getAttribute(String name):Returns the
attribute for the specified name.
• public Enumeration getInitParameterNames():Returns the
names of the context's initialization parameters as an
Enumeration of String objects.
• public void removeAttribute(String name):Removes the
attribute with the given name from the servlet context.
Department of Computer
Engineering
ServletRequest Interface
• An object of ServletRequest is used to provide
the client request information to a
servlet as content type, conten length,
such
paramete names t
rinformations, attributesand
etc. values, header
Department of Computer
Engineering
Methods of ServletRequest interface
Method Description
public String getContentType() Returns the Internet Media Type of the request
entity data, or null if not known.
public abstract String getServerName() Returns the host name of the server that
received the request.
puDbepliacm
tr inentt gofeCtoSmpeurtvererPort() Returns the port number on which this request
Engineering AJP Unit- VI wasMrres.CcheaivvaendP..P. 25
Example
Index.html
Department of Computer
Engineering
//DemoServ.java
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class DemoServ
extends HttpServlet{
public void
doGet(HttpServletRequest
req,HttpServletResponse
res)
throws
ServletException,IOExcepti
on
{
res.setContentType("text/html");
PrintWriter pw=res.getWriter();
Department of Computer
String name=req.getParameter("name");//will return value
Engineering
GenericServlet class
• GenericServlet class
implements Servlet, ServletConfig and Serializ
able interfaces. It provides the
implementation of all the methods of these
interfaces except the service method.
• GenericServlet class can handle any type of
request so it is protocol-independent.
Department of Computer
Engineering
Methods of GenericServlet class
• public void init(ServletConfig config) is used to initialize the servlet.
• public abstract void service(ServletRequest request, ServletResponse
response) provides service for the incoming request. It is invoked at
each time when user requests for a servlet.
• public void destroy() is invoked only once throughout the life cycle and
indicates that servlet is being destroyed.
• public ServletConfig getServletConfig() returns the object of
ServletConfig.
• public String getServletInfo() returns information about servlet such as
writer, copyright, version etc.
• public void init() it is a convenient method for the servlet programmers,
now there is no need to call super.init(config)
• public ServletContext getServletContext() returns the object of
ServletContext.
Department of Computer
Engineering
Methods of GenericServlet class
• public String getInitParameter(String name) returns the
parameter value for the given parameter name.
• public Enumeration getInitParameterNames() returns all the
parameters defined in the web.xml file.
• public String getServletName() returns the name of the servlet
object.
• public void log(String msg) writes the given message in the
servlet
log file.
• public void log(String msg,Throwable t) writes the explanatory
message in the servlet log file and a stack trace.
Department of Computer
Engineering
//First.java
import java.io.*;
import javax.servlet.*;
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.print("<html><body>");
out.print("<b>hello generic servlet</b>");
out.print("</body></html>");
}
}Department of Computer
Engineering
javax.servlet.http Package
• The javax.servlet.http package contains interfaces and classes
that are responsible for http requests only.
• Interfaces in javax.servlet.http package
There are many interfaces in javax.servlet.http package. They
are as follows:
– HttpServletRequest
– HttpServletResponse
– HttpSession
– HttpSessionListener
– HttpSessionAttributeListener
– HttpSessionBindingListener
– HttpSessionActivationListener
– HttpSessionContext (deprecated now)
Department of Computer
Engineering
• Classes in javax.servlet.http package
There are many classes in
javax.servlet.http package. They are as follows:
– HttpServlet
– Cookie
– HttpServletRequestWrapper
– HttpServletResponseWrapper
– HttpSessionEvent
– HttpSessionBindingEvent
– HttpUtils (deprecated now)
Department of Computer
Engineering
HttpServletRequest Interface
• HttpServletRequest is an interface and extends
the ServletRequest interface.
• By, extending the ServletRequest this interface is
able to allow request information for HTTP
Servlets.
• Object of the HttpServletRequest is created by
the Servlet Container and then it is passed to the
service method (doGet(), doPost(), etc.) of the
Servlet.
Department of Computer
Engineering
Methods of HttpServletRequest
HttpServletRequest has various methods. Some of them are as follows :
• String getContextPath() : This method is used to get the portion of the
requested URI.
• Cookie[] getCookies() : This method is used to get all the Cookie the
object in an array.
• java.lang.String getHeader(java.lang.String name) : This
method is used to get the given request header.
• int getIntHeader(java.lang.String name) : This method is used to get
the given request header value as an int.
• java.lang.String getMethod() : This method is used to get the HTTP
method within which the request was made.
• HttpSession getSession() : This method is used to get the
current
session or creates a new session if the request doesn't have session.
• java.lang.String getRequestedSessionId() : This method is used to get
Department of Computer
the id of the current session.
Engineering
HttpServletResponse Interface
• The HttpServletResponse interface enables a
servlet to formulate an HTTP response to a client.
• The response object encapsulates all information
to be returned from the server to the client.
• In the HTTP protocol, this information is
transmitted from the server to the client either
by HTTP headers or the message body of the
request.
Department of Computer
Engineering
Methods of HttpServletResponse
• public void addCookie(Cookie cookie)- Adds the specified cookie to the
response. This method can be called multiple times to set more than one
cookie.
• public void addDateHeader (String name, long date)- Adds a response header
with the given name and date-value.
• public void addHeader(String name,String value)- Adds a response header
with the given name and value.
• public void addlntHeader(String name,int value)- Adds a response header
with the given name and integer value.
• public boolean containsHeader(String name)- Returns a boolean indicating
whether the named response header has already been set.
• public String encodeRedirectURL(String url)- Encodes the specified URL for
use in the sendRedirect method or, if encoding is not needed, returns the URL
unchanged.
Department of Computer
Engineering
Methods of HttpServletResponse
• public String encodeURL(String url)- Encodes the specified URL by including
the session ID in it, or, if encoding is not needed, returns the URL unchanged.
• public void sendError(int sc) throws IOException - Sends an error response
to
the client using the specified status code and clearing the buffer.
• public void sendError(int Be, String mag) throws IOException - Sends an error
response to the client using the specified status clearing the buffer.
• public void sendRedirect(string location) throws IOException - Sends a
temporary redirect response to the client using the specified redirect location
URL.
• public void setDateHeader(String name,long date) - Sets a response header
with the given name and date-value.
• public void setHeader(String name, String value) - Sets a response header
with the given name and value.
• public void setlntHeader (String name,int value) - Sets a response header with
the given name and integer value.
• Department
public
Engineering
void setStatus(int sc) - Sets the status code for this response.
of Computer
HttpSession Interface
• In web terminology, a session is simply the limited
interval of time in which two systems communicate
with each other.
• the web applications that work on http protocol use
several different technologies that comprise Session
Tracking, which means maintaining the state (data)
of the user, in order to recognize him/her.
• In order to achieve session tracking in servlets,
cookies have been one of the most commonly used
technic.
Department of Computer
Engineering
Methods of HttpSession Interface
• public HttpSession getSession():Returns the current session
associated with this request, or if the request does not have a
session, creates one.
• public HttpSession getSession(boolean create):Returns the
current HttpSession associated with this request or, if there is no
current session and create is true, returns a new session.
• public String getId():Returns a string containing the unique
identifier value.
• public long getCreationTime():Returns the time when this
session was created, measured in milliseconds since midnight
January 1, 1970 GMT.
• public long getLastAccessedTime():Returns the last time the
client sent a request associated with this session, as the number
of milliseconds since midnight January 1, 1970 GMT.
• public void invalidate():Invalidates this session then unbinds any
o b ej c t s b o u nd
De pa rtm en t o f Co mp ut er
to it.
Cookie Class
• A cookie is a small collection of information that
can be transmitted to a calling browser, which
retrieves it on each subsequent call from the
browser so that the server can recognize calls
from the same client. A cookie is returned with
each call to the site that created it, unless it
expires.
Constructor Description
Department of Computer
Engineering
HttpSessionEvent and HttpSessionListener
• The HttpSessionEvent is notified when session object is
changed. The corresponding Listener interface for this
event is HttpSessionListener.
• We can perform some operations at this event such as
counting total and current logged-in users, maintaing a
log of user details such as login time, logout time etc.
• Methods of HttpSessionListener interface
1. public void sessionCreated(HttpSessionEvent e): is
invoked when session object is created.
2. public void sessionDestroyed(ServletContextEvent e): is
invoked when session is invalidated
Department of Computer
Engineering
Session Tracking in Servlets
Session Tracking is a way to maintain state (data) of an user. It is also known as
session management in servlet.
HTTP is stateless that means each request is considered as the new request.
Department of Computer
Engineering
Handling HTTP Requests and Responses
• The HttpServlet class provides specialized
methods that handle the various types of HTTP
requests. A servlet developer typically overrides
one of these methods.
• These methods are doDelete( ), doGet( )
, doHead( ), doOptions( ), doPost( ),
doPut( ), and doTrace( ).
Department of Computer
Engineering
Handling HTTP GET Requests
• Here we will develop a servlet that handles an
HTTP GET request. The servlet is invoked
when a form on a web page is submitted. The
example contains two files. A web page is
defined in ColorGet.html, and a servlet is
defined in ColorGetServlet.java.
Department of Computer
Engineering
ColorGet.html
<html>
<body>
<center>
<form name="Form1"
action="http://localhost:8080/examples/servlets/servlet/ColorGetServ
let">
<B>Color:</B>
<select name="color" size="1">
<option value="Red">Red</option>
<option value="Green">Green</option>
<option value="Blue">Blue</option>
</select>
<br><br>
<input type=submit value="Submit"> </form>
</body>
</html>
Department of Computer
Engineering
// ColorGetServlet.java
import java.io.*;
import javax.servlet.*;
import
javax.servlet.http.*;
public class
ColorGetServlet
extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
String color = request.getParameter("color");
response.setContentType("text/html"); PrintWriter pw =
response.getWriter(); pw.println("<B>The selected color is: ");
pw.println(color);
Department of Computer
pw.close();
Engineering
Handling HTTP POST Requests
Here we will develop a servlet that handles an
HTTP POST request. The servlet is invoked when
a form on a web page is submitted. The example
contains two files. A web page is defined
in ColorPost.html, and a servlet is defined
in ColorPostServlet.java.
Department of Computer
Engineering
ColorGet.html
<html>
<body>
<center>
<form name="Form1" method=“post”
action="http://localhost:8080/examples/servlets/servlet/ColorGetServ
let">
<B>Color:</B>
<select name="color" size="1">
<option value="Red">Red</option>
<option value="Green">Green</option>
<option value="Blue">Blue</option>
</select>
<br><br>
<input type=submit value="Submit"> </form>
</body>
</html>
Department of Computer
Engineering
// ColorGetServlet.java
import java.io.*;
import javax.servlet.*;
import
javax.servlet.http.*;
public class
ColorGetServlet
extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
String color = request.getParameter("color");
response.setContentType("text/html"); PrintWriter pw =
response.getWriter(); pw.println("<B>The selected color is: ");
pw.println(color);
Department of Computer
pw.close();
Engineering