[go: up one dir, main page]

0% found this document useful (0 votes)
70 views52 pages

Servlet

The document discusses servlet technology including the lifecycle of a servlet, servlet interfaces like Servlet, ServletConfig and ServletContext, and how to use initialization parameters and attributes with ServletConfig and ServletContext.

Uploaded by

Onkar Gutti
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
70 views52 pages

Servlet

The document discusses servlet technology including the lifecycle of a servlet, servlet interfaces like Servlet, ServletConfig and ServletContext, and how to use initialization parameters and attributes with ServletConfig and ServletContext.

Uploaded by

Onkar Gutti
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 52

Unit VI: Servlets

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.

public void service(ServletRequest provides response for the incoming


request,ServletResponse response) request. It is invoked at each request by
the web container.

public void destroy() is invoked only once and indicates that


servlet is being destroyed.

public ServletConfig returns the object of ServletConfig.


getServletConfig()

public String getServletInfo() returns information about servlet such as


writer, copyright, version etc.
Department of Computer
Engineering
import java.io.*;
import javax.servlet.*;

public class First implements Servlet{


ServletConfig config=null;

public void init(ServletConfig config)


{ this.config=config;
System.out.println("servlet is initialized");
}

public void service(ServletRequest


req,ServletResponse res)
throws IOException,ServletException{

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.*;

public class DemoServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

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 getParameter(String name) is used to obtain the value of a parameter by


name.
public String[] returns an array of String containing all values
getParameterValues(String name) of given parameter name. It is mainly used
to obtain values of a Multi select list box.

java.util.Enumeration returns an enumeration of all of the


getParameterNames() request parameter names.
public int getContentLength() Returns the size of the request entity data, or
-1 if not known.
public String getCharacterEncoding() Returns the character set encoding for the
input of this request.

public String getContentType() Returns the Internet Media Type of the request
entity data, or null if not known.

public ServletInputStream Returns an input stream for reading binary


getInputStream() throws IOException data in the request body.

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

<form action="welcome" method="get">


Enter your name<input type="text" name="name"><br>
<input type="submit" value="login">
</form>

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.*;

public class First extends GenericServlet{


public void service(ServletRequest req,ServletResponse res)
throws IOException,ServletException{

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.

• Sessions are maintained automatically by a


session cookie that is sent to the client when the
session is first created. The session cookie
contains the session ID, which identifies the client
to the browser on each successive interaction.
Department of Computer
Engineering
Types of Cookie
1. Non-persistent cookie
2. Persistent cookie
Non-persistent cookie
It is valid for single session only. It is removed each time when
user closes the browser.
Persistent cookie
It is valid for multiple session . It is not removed each time when
user closes the browser. It is removed only if user logout or
signout.

Constructor of Cookie class

Constructor Description

Cookie() constructs a cookie.


Cookie(String name, String value) constructs a cookie with a
specified name and value.
Department of Computer
Engineering
Cookie Class Methods
Method Description

public void setMaxAge(int expiry) Sets the maximum age of the


cookie in seconds.

public String getName() Returns the name of the cookie.


The name cannot be changed
after creation.

public String getValue() Returns the value of the cookie.

public void setName(String name) changes the name of the cookie.

public void setValue(String value) changes the value of the cookie.

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 protocol is a stateless so we need to maintain state using session tracking


techniques. Each time user requests to the server, server treats the request as
the new request. So we need to maintain the state of an user to recognize to
particular user.

HTTP is stateless that means each request is considered as the new request.

Session Tracking Techniques


There are four techniques used in Session tracking:
Cookies
Hidden Form Field
URL Rewriting
HttpSession

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

You might also like