Advance Java Programming(22517)
6.Servlet(Marks
14)
Web and Web
Application
Web consists of billions of clients and server
connected through wires and wireless networks.
The web clients make requests to web server. The
web server receives the request, finds the
resources and return the response to the client.
Mr. Nilesh Vishwasrao
2
Web
Application
A web application is an application accessible from
the web.
A Web application is a web site with dynamic
functionality on the server. Google,
Facebook, Twitter are examples of web
applications.
A web application is composed of web components
like Servlet, JSP, Filter etc. and other components such
as HTML.
The web components typically execute in Web Server
3
and respond to HTTP request.
HTT
HTTPPis a protocol that clients and servers
use on the web to communicate.
It is similar to other internet protocols
such as SMTP (Simple Mail Transfer
Protocol) and FTP (File Transfer Protocol)
but there is one fundamental difference.
HTTP is a stateless protocol.
The client sends an HTTP request and the
server answers with an HTML page to the
client, using HTTP. 4
HTT
P
5
HTTP methods
Method Name Description
OPTIONS Request for communication options that are available
on the request/response chain.
GET Request to retrieve information from server using a given
URI.
HEAD Identical to GET except that it does not return a message-
body, only the headers and status line.
POST Request for server to accept the entity enclosed in the
body of HTTP method.
DELETE Request for the Server to delete the resource.
CONNECT Reserved for use with a proxy that can switch to being a
tunnel.
PUT This is same as POST, but POST is used to create, PUT can
be used to create as well as update. It replaces all current
representations of the target resource with the uploaded
content. Mr. Nilesh Vishwasrao
6
HTTP
methods
GET Request POST Request
Data is sent in header to the Data is sent in the request
server body
Get request can send Large amount of data can
only limited amount of be sent.
data
Get request is not secured Post request is secured
because data is exposed in because data is not
URL exposed in URL.
Get request can be Post request cannot be
bookmarked and is more bookmarked.
7
efficient.
Servlet :
Introduction
Servlet technology is used to create web
application (resides at server side and
generates dynamic web page).
Servlet is Java program which run on web
server and responding to request of clients
(Web browser).
Servlet technology is robust and scalable
because of java language.
10
Servl
Webet
applications are helper applications that resides
at web server and build dynamic web pages.
A dynamic page could be anything like a page that
randomly chooses picture to display or even a page
that displays the current time.
11
Servlet : Defined in many
ways
Servlet is a technology i.e. used to create web application.
Servlet is an API that provides many interfaces and
classes including documentations.
Servlet is an interface that must be implemented
for creating any servlet.
Servlet is a class that extend the capabilities of the
servers and respond to the incoming request. It can
respond to any type of requests.
Servlet is a web component that is deployed on the
server to create dynamic web page. 12
Servlet :
Defined
13
Servl
et Servlet is a Java object that
A Java
responds to HTTP requests. It runs inside a
Servlet container.
21
Servl
et is part of a Java web application.
A Servlet
A Servlet container may run multiple web applications at the
same time, each having multiple servlets running inside.
22
Servl
et
A Java web application can contain other
components than servlets.
It can also contain Java Server Pages (JSP), images,
text files, documents, Web Services etc.
23
HTTP Request and
Response
The browser sends an HTTP request to the Java web
server.
The web server checks if the request is for a servlet. If it is,
the servlet container is passed the request.
The servlet container will then find out which servlet the
request is for, and activate that servlet.
The servlet is activated by calling the
Servlet.service()method.
Once the servlet has been activated
the servlet processes the request,
24
and generates a response. The
Servlet
Java Containers
servlet containers are usually running inside a
Java web
server.
Example: Tomcat, GlasssFish, Jboss etc.
Container:
It provides runtime environment for JavaEE
(j2ee) applications.
It performs many operations that are
given below:
Life Cycle Management
Multithreaded support 25
Types of
Servlet
Generic Servlet:
It is in javax.servlet.GenericServlet package
It is protocol independent.
HTTP Servlet
It is in javax.servlet.HTTPServlet package
Built-in HTTP protocol support.
28
Types of
Servlet
Generic Servlet HTTP Servlet
Package: javax.servlet Package: javax.servlet.http
It is protocol independent It is protocol dependent
servlet specifically only HTTP protocol
request- response handle.
It uses service() method for It uses methods like doPost(),
handling request-response. doGet()
29
Servlet life
cycle
Each servlet instance is loaded once.
Each execution happens in a separate thread
Three methods:
init() : call only once to initialize servlet.
service() : Call for every request.
destroy() : call only once
Method service() is invoked every time a request
comes. It spawns off threads to perform doGet or
doPost based on the method invoked.
30
Servlet life
1. Loadcycle
Servlet Class.
2. Create Instance of Servlet.
3. Call the servlets init() method.
4. Call the servlets service() method.
5. Call the servlets destroy() method.
Note: Step 1,2,3 executed only once when servlet is initially
loaded.
Step 4 executed "N"-times whenever http request comes
Step 5 executed to destroy servlet means unload servlet class
31
Servlet life
cycle
Mr. ilesh Vishwasrao
32
Servlet
API
Servlet API consists of two important packages
that encapsulates all the important classes and
interface, namely :
javax.servlet
javax.servlet.http
34
Servlet Interface:
javax.servlet
Interfaces Description
Servlet Declare life cycle methods for servlet. To
implement this interface we have to extends
GenericServlet or HttpServlet classes.
ServletConfig Helps servlet to get initialization parameter
means startup information, basic
information about servlet.
ServletContext Allows servlet to log events and access
information about their environment
ServletRequest Used to read data from client
35
ServletResponse Used to sent data to client
Servlet Classes:
Classesjavax.servlet
Description
GenericServlet Used to create servlet (Protocol
independent)
ServletInputStream Provides an input stream for reading
requests from client.
ServletOutputStream This class supports an output stream
for writing responses to a client
ServletException For handling exception: Error Occurred
UnavailableException For handling exception: generate when
servlet not available
36
Servlet Interface:
javax.servlet.http
Classes Description
HttpServlet Used to create http servlet (Protocol
dependent)
HttpServletRequest It enables servlets to read data from an
HTTP request
HttpServletResponse It enables servlets to write data to an
HTTP response
HttpSession It allows to read and write session data.
Cookie Cookie class allows state information to
be stored on a client machine
37
Servlet Interface:
Methods
38
GenericServlet
class Servlet, ServletConfig and
It implements
Serializable interfaces.
It provides the implementation of all the methods of
these interfaces except the service method (You
have to write code in your servlet class for this
method).
GenericServlet class can handle any type of
request so it is protocol-independent.
39
ServletConfig interface
Object of ServletConfig created by the web
container for each servlet.
This object can be used to get configuration
information from web.xml file.
Advantage: No need to edit the servlet file if
information is modified from the web.xml file.
40
ServletConfig
interface
public String getInitParameter(String name):
Returns the parameter value for the specified
parameter name.
Enumeration getInitParameterNames():
Returns all the initialized parameter names.
public String getServletName():
Returns the name of the servlet.
public ServletContext getServletContext():
Returns an object of ServletContext.
41
ServletConfig
interface
42
ServletContext
interface
An object of ServletContext is created by the
web container at time of deploying the project
(web application).
This object can be used to get configuration
information from web.xml file.
There is only one ServletContext object per
web application.
43
ServletContext
interface
<context-param>
<param-name>dname </param-name>
<param-value> sun.jdbc.odbc.JdbcOdbcDriver
</param-value>
</context-param>
45
HttpServl
et
It extends GenericServlet class and
implements Servlet, ServletConfig and
Serializable interface.
It provides http specific methods such as
doGet, doPost, doHead, doTrace etc.
48
HttpServlet
• The most important are six doxxx methods that get
called when a related HTTP request method is used.
• The six methods are doPost, doPut, doGet, doDelete,
doOptions and doTrace.
• For instance, the doGet method is invoked when the
servlet receives an HTTP request that was sent using the
GET method.
• Of the six doxxx methods, the doPost and the doGet
methods are the most frequently used.
49
Implementati
onServlet is just an ordinary Java class
A Java
which implements the interface
javax.servlet.Servlet;
The easiest way to implement this interface is
to extend either the
class GenericServlet or HttpServlet.
51
Exampl
e
52
Implementati
onan HTTP request arrives at the web
When
server, targeted for your Servlet, the web
server calls your Servlet's service() method.
The service() method then reads the request,
and generates a response which is sent back to
the client (e.g. a browser).
53
Implementation:HT
TP
The javax.servlet.http.HttpServlet class is a
slightly more advanced base class than
the GenericServlet
The HttpServlet class reads the HTTP request,
and determines if the request is an HTTP GET,
POST, PUT, DELETE, HEAD etc. and calls one
the corresponding method.
54
Implementation:
HTTP
55
HttpRequest:
This Interface
interface present in
javax.servlet.http.HttpRequest
The purpose of the HttpRequest object is to
represent the HTTP request a browser sends to
your web application. 56
HttpRequest:
Parameters
Thus, anything the browser may send,
is accessible via the HttpRequest.
We can read initialization parameters also
using HttpServletRequest object with
getInitParameter method.
57
HttpRequest:
Parameters
Also we can use following code if request parameters is
send through body part of the Http request.
If the browser sends an HTTP GET request, the
parameters are included in the query string in the URL.
If the browser sends an HTTP POST request, the
parameters are included in the body part of the HTTP
58
request.
HttpRequest:
Header
The request headers are name, value pairs sent by the browser
along with the HTTP request.
The request headers contain information about e.g. what
browser software is being used, what file types the browser is
capable of receiving etc. In short, at lot of meta data around the
HTTP request.
Above example reads the Content-Length header sent by the
browser.
59
HttpRequest:
InputStream
If the browser sends an HTTP POST request, request
parameters and other potential data is sent to the server
in the HTTP request body.
If does not have sent data in parameters means may be
binary data, that time we will require InputStream for
accessing request body come from client.
InputStream requestBodyInput =
request.getInputStream();
NOTE: You will have to call this method before
calling any getParameter() method.
60
HttpRequest:
Session
It is possible to obtain the session object from the
HttpRequest object too.
The session object can hold information about a given user,
between requests.
So, if you set an object into the session object during one
request, it will be available for you to read during any
subsequent requests within the same session time scope.
61
HttpResponse:
Interface
This interface is present in java.servlet.http package.
The purpose of the HttpResponse object is to
represent the HTTP response of web application
sends back to the browser.
62
HttpResponse: Writing
HTML
To send HTML back to the browser, you have to
obtain the a PrintWriter from the HttpResponse
object.
63
HttpResponse:
Headers
Headers must be set before any data is written to the
response.
Examples:
Syntax:
response.setHeader("Header-Name", "Header Value");
Set Content type:
response.setHeader("Content-Type", "text/html");
Writing text
response.setHeader("Content-Type",
"text/plain"); PrintWriter writer =
response.getWriter(); writer.write("This is
just plain text");
64
Content-length
HttpResponse: Writing
Binary
Dat
a
We can also write binary data back to the browser
instead of text.
For instance, we can send an image back, a PDF file or
a Flash file or something like that.
First we have to set content type. And need to use
following code:
OutputStream outputStream =
response.getOutputStream();
outputStream.write(...);
65
HttpResponse:
Redirecting
We can redirect the browser to a different URL
from your servlet.
You cannot send any data back to the browser
when redirecting response.sendRed
irect("http://www.google.com");
Or Another servlet file call
response.sendRedirect(“HelloServ
let");
66
HttpSessi
on
The HttpSession object represents a user session.
A user session contains information about the user
across multiple HTTP requests.
When a user enters your site for the first time, the user
is given a unique ID to identify his session by.
This ID is typically stored in a cookie or in a request
parameter.
67
HttpSessi
on
We can store values in the session object, and retrieve
them later. Do it in following way:
session.setAttribute("userName", "theUserName");
This code sets an attribute named "userName", with
the value "theUserName".
To read the value again:
String userName = (String) session.getAttribute("userName");
Values stored in the session object are stored in the
memory of the servlet container.
68
HttpSession:
Example
Create one HTML file: index.html which send user name
and password to the servlet file.
Create two servlet file, one will save user name into
session and that session information is send to another
servlet. This example shows the session tracking.
70
RequestDispatc
her
The RequestDispatcher class enables your servlet to "call"
another servlet from inside another servlet.
We can obtain a RequestDispatcher from the
HttpServletRequest object.
The above code obtains a RequestDispatcher targeted at
whatever Servlet (or JSP) that is mapped to the URL 71
/anotherUrl.simple.
RequestDispatc
her
You can call the RequestDispatcher using either its
include() or forward() method.
The forward() method intended for use in forwarding the
request, meaning after the response of the calling servlet has
been committed. You cannot merge response output using this
method.
The include() method merges the response written by the calling
servlet, and the activated servlet. This way you can achieve
"server side includes" using the include().
72
Servlet: Load on start
up
The <servlet> element has a sub-element called
<load-on-startup> which you can use to control when the servlet
container should load the servlet.
If you do not specify a <load-on-startup> element, the servlet
container will typically load your servlet when the first request
arrives for it.
By setting a <load-on-startup> element, you can tell the servlet
container to
load the servlet as soon as the servlet container starts.
Remember, the servlets init() method is called when the servlet is
loaded. 73
Cooki
e
HTTP Cookies are little pieces of data that a web
application can store on the client machine of users
visiting the web application.
Typically up to 4 kilo bytes(KB) of data can be store.
We can write cookies using HttpServletResponse object:
Example:
Cookie cookie = new Cookie("myCookie",
"myCookieValue"); response.addCookie(cookie);
74
Cooki
e each request is considered as a new request.
By default,
In cookies technique, we add cookie with response
from the servlet.
So cookie is stored in the cache of the browser.
After that if request is sent by the user, cookie is added
with request by default. Thus, we recognize the user as
the old user.
75
Cookie:
Types
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 sign-out or clear cookies/cache memory of
browsers.
76
Cookie:
Pros/Cons
Advantages:
Simplest technique of maintaining the state.
Cookies are maintained at client side.
Disadvantages
It will not work if cookie is disabled from the browser.
Only textual information can be set in Cookie object.
77
Cookie:
Constructor
javax.servlet.http.Cookie class provides the
functionality of using cookies. It provides a lot of
useful methods for cookies.
Constructor Description
Cookie() constructs a cookie.
Cookie(String name, String value) constructs a cookie with a specified
name and value.
78
Cookie:
Methods
Useful
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.
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.
79
Cookie:
Methods
Other methods:
public void addCookie(Cookie ck):method
of HttpServletResponse interface is used to
add cookie in response object.
public Cookie[] getCookies():method of
HttpServletRequest interface is used to return
all the cookies from the browser.
80
Cookie: How to
create?
Creating cookie object
Cookie ck=new
Cookie("user",”Sandip");
Adding cookie in the response
response.addCookie(ck);//
81
Cookie: For delete
Cookies
Deleting value of cookie
Cookie ck=new Cookie("user","");
Changing the maximum age to 0
seconds
ck.setMaxAge(0);
Adding cookie in the response
response.addCookie(ck); 82
Cookie: To get
Cookies
Cookie ck[]=request.getCookies();
for(int i=0;i<ck.length;i++)
{
out.print("<br>"+ck[i].getName()+"
"+ck[i].getValue());
//printing name and value of cookie
}
83
Cookie:
Example
84
Cookie:
Example
Create one Html file which send user name
to first servlet.
First servlet file set cookies of that user
name and call second servlet file.
Second servlet file retrieve name of user
from cookies instead of from session.
85
MC
Q
Which is of the following are classes and
which are interfaces?
1. Servlet
2. ServletConfig
3. ServletRequest
4. ServletResponse
5. HttpServlet
6. GenericServlet
7. Cookies
8. Session 86
MC
Q
What is returntype of the getSession()
method?
1. Session
2. int
3. HttpSession
4. boolean
5. void
87
MC
Q
Javax.servlet packages does not
have:
1. HttpServlet
2. ServletConfig
3. ServletContext
4. Servlet
5. HttpServletRequest
6. ServletResponse
7. HttpServletResponse
8. Cookies 88
MC
Q
Javax.servlet packages does not
have:
1. HttpServlet
2. ServletConfig
3. ServletContext
4. Servlet
5. HttpServletRequest
6. ServletResponse
7. HttpServletResponse
8. Cookies 89
MC
Q
Which is correct package for
HttpServlet and HttpServletResponse?
1. javax.servlet.*;
2. javax.servlet.http.*;
3. javax.servlet.httpservlet.*;
4. java.lang.*;
90
MC
Q
Which of the following method is invoked
when Http post request?
1. doPost()
2. doPostCall()
3. doHttpPost()
4. doPut()
5. doTrace()
6. doPostOptions()
91
MC
Q
Which of the following method is invoked
when Http post request?
1. doPost()
2. doPostCall()
3. doHttpPost()
4. doPut()
5. doTrace()
6. doPostOptions()
92