0% found this document useful (0 votes)
15 views

Unit VI

Uploaded by

nadafaaliya1
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Unit VI

Uploaded by

nadafaaliya1
Copyright
© © All Rights Reserved
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 language


Interface) scripting as
was common a server-
programming language. side

Department of Computer
AJP Unit- VI 2
Engineering
Department of Computer
AJP Unit- VI 3
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
AJP Unit- VI 4
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
AJP Unit- VI 5
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
AJP Unit- VI 6
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
AJP Unit- VI 7
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
AJP Unit- VI 8
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
AJP Unit- VI 9
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
AJP Unit- VI 10
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
AJP Unit- VI 11
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
AJP Unit- VI 12
Engineering
Servlet Interface
• Servlet interface provides commonbehaviorto
all the servlets.Servlet interface defines
methods that all servlets must implement.

Department of Computer
AJP Unit- VI 13
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 returns the object of ServletConfig.


ServletConfig
getServletConfig()
public String getServletInfo() returns information about servlet such as
writer, copyright, version etc.
Department of Computer AJP Unit- VI
Engineering 14
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()
{return config;} AJP Unit- VI 15
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
AJP Unit- VI 16
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
AJP Unit- VI 17
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
AJP Unit- VI 18
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
AJP Unit- VI 19
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
AJP Unit- VI 20
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
AJP Unit- VI 21
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
AJP Unit- VI 22
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
AJP Unit- VI 23
Engineering
ServletRequest Interface
• An object of ServletRequest is used to provide
the client request information to a
servlet as content type, content length,
such
parameter names and values, header
informations, attributes etc.

Department of Computer
AJP Unit- VI 24
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 request


getParameterNames() 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.
puDbepliacrtminentt gofeCotmSpeurtevrerPort() Returns the port number on which this request
25
AJP Unit- VI
Engineering
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
AJP Unit- VI 26
Engineering
//DemoServ.java

Importjavax.servlet.http.*;
import javax.servlet.*; import
java.io.*;
public class DemoServ
extends HttpServlet{
public void
doGet(HttpServletRequest
req,HttpServletResponse res)
throws
ServletException,IOException
{
res.setContentType("text/html");
PrintWriter pw=res.getWriter();

String name=req.getParameter("name");//will return value


pw.println("Welcome "+name);

Department of Computer
pw.close();
Engineering
AJP Unit- VI 27
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
AJP Unit- VI 28
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
AJP Unit- VI 29
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
AJP Unit- VI 30
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
AJP Unit- VI 31
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
AJP Unit- VI 32
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
AJP Unit- VI 33
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
AJP Unit- VI 34
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
AJP Unit- VI Mrs.Chavan P.P. 35
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
AJP Unit- VI Mrs.Chavan P.P. 36
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
AJP Unit- VI 37
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 headerwith the
given name and value.
• public void setlntHeader (String name,int value) - Sets a response header with the
given name and integer value.
• public void setStatus(int sc) - Sets the status code for this response.

Department of Computer
AJP Unit- VI 38
Engineering
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
AJP Unit- VI 39
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 jeenct
De pa rtm
AJP Unit- VI 40
otfsCobmpoutuernd 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
AJP Unit- VI 41
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
AJP Unit- VI 42
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
AJP Unit- VI 43
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
AJP Unit- VI 44
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
AJP Unit- VI 45
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
AJP Unit- VI 46
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
AJP Unit- VI 47
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
AJP Unit- VI 48
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
AJP Unit- VI 49
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
AJP Unit- VI Mrs.Chavan P.P. 50
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
AJP Unit- VI 51
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
AJP Unit- VI 52

You might also like