Servlet Technology Overview and Benefits
Servlet Technology Overview and Benefits
Servlet Tutorial
Servlet technology is used to create web application (resides at server side and generates
dynamic web page).
Servet technology is robust and scalable as it uses the java language. Before Servlet, CGI
(Common Gateway Interface) scripting language was used as a server-side programming
language. But there were many disadvantages of this technology. We have discussed these
disadvantages below.
There are many interfaces and classes in the servlet API such as Servlet, GenericServlet,
HttpServlet, ServletRequest, ServletResponse etc.
What is a Servlet?
Servlet can be described in many ways, depending on the context.
What is the web application and what is the difference between Get and Post request ?
What information is received by the web server if we request for a servlet ?
How to run servlet in Eclipse, MyEclipse and Netbeans IDE ?
What are the ways for servlet collaboration and what is the difference between
RequestDispatcher and sendRedirect() method ?
What is the difference between ServletConfig and ServletContext interface?
How many ways we can maintain state of an user ? Which approach is mostly used in
web development ?
How to count total number of visitors and total response time for a request using Filter ?
How to run servlet with annotation ?
How to create registration form using Servlet and Oracle database ?
How can we upload and download file from the server ?
A web application is an application accessible from the web. 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 and respond to HTTP request.
CGI technology enables the web server to call an external program and pass HTTP request
information to the external program to process the request. For each request, it starts a new
process.
Disadvantages of CGI
Advantage of Servlet
There are many advantages of Servlet over CGI. The web container creates threads for handling
the multiple requests to the servlet. Threads have a lot of benefits over the Processes such as they
share a common memory area, lighweight, cost of communication between the threads are low.
The basic benefits of servlet are as follows:
1. better performance: because it creates a thread for each request not process.
2. Portability: because it uses java language.
3. Robust: Servlets are managed by JVM so no need to worry about momery leak, garbage
collection etc.
4. Secure: because it uses java language..
Servlet Terminology
There are some key points that must be known by the servlet programmer like server, container,
get request, post request etc. Let's first discuss these points before starting the servlet technology.
1. HTTP
2. HTTP Request Types
3. Difference between Get and Post method
4. Container
5. Server and Difference between web server and application server
6. Content Type
7. Introduction of XML
8. Deployment
1. Http is the protocol that allows web servers and browsers to exchange data over the web.
2. It is a request response protocol.
3. Http uses reliable TCP connections bydefault on TCP port 80.
4. It is stateless means each request is considered as the new request. In other words, server
doesn't recognize the user bydefault.
Every request has a header that tells the status of the client. There are many request methods. Get
and Post requests are mostly used.
GET
POST
HEAD
PUT
DELETE
OPTIONS
TRACE
HTTP
Description
Request
GET Asks to get the resource at the requested URL.
Asks the server to accept the body info attached. It is like GET request with extra
POST
info sent with the request.
Asks for only the header part of whatever a GET would return. Just like GET but
HEAD
with no body.
TRACE Asks for the loopback of the request message, for testing or troubleshooting.
PUT Says to put the enclosed info (the body) at the requested URL.
DELETE Says to delete the resource at the requested URL.
Asks for a list of the HTTP methods to which the thing at the request URL can
OPTIONS
respond
There are many differences between the Get and Post request. Let's see these differences:
GET POST
In case of post request, large amount of
1) In case of Get request, only limited amount of
data can be sent because data is sent in
data can be sent because data is sent in header.
body.
2) Get request is not secured because data is exposed Post request is secured because data is not
in URL bar. exposed in URL bar.
3) Get request can be bookmarked Post request cannot be bookmarked
4) Get request is idempotent. It means second
request will be ignored until response of first request Post request is non-idempotent
is delivered.
5) Get request is more efficient and used more than Post request is less efficient and used less
Post than get.
As we know that data is sent in request header in case of get request. It is the default request
type. Let's see what informations are sent to the server.
As we know, in case of post request original data is sent in message body. Let's see how
informations are passed to the server in case of post request.
Container
Server
1. Web Server
2. Application Server
Web Server
Web server contains only web or servlet container. It can be used for servlet, jsp, struts, jsf etc. It
can't be used for EJB.
Application Server
Application server contains Web and EJB containers. It can be used for servlet, jsp, struts, jsf,
ejb etc.
Content Type
Content Type is also known as MIME (Multipurpose internet Mail Extension) Type. It is a
HTTP header that provides the description about what are you sending to the browser.
text/html
text/plain
application/msword
application/[Link]-excel
application/jar
application/pdf
application/octet-stream
application/x-zip
images/jpeg
video/quicktime etc.
Servlet API
The [Link] and [Link] packages represent interfaces and classes for servlet api.
The [Link] package contains many interfaces and classes that are used by the servlet or
web container. These are not specific to any protocol.
The [Link] package contains interfaces and classes that are responsible for http
requests only.
1. Servlet
2. ServletRequest
3. ServletResponse
4. RequestDispatcher
5. ServletConfig
6. ServletContext
7. SingleThreadModel
8. Filter
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
10 | P a g e Code MicroSystem Arvind Sir 9822939054
9. FilterConfig
10. FilterChain
11. ServletRequestListener
12. ServletRequestAttributeListener
13. ServletContextListener
14. ServletContextAttributeListener
1. GenericServlet
2. ServletInputStream
3. ServletOutputStream
4. ServletRequestWrapper
5. ServletResponseWrapper
6. ServletRequestEvent
7. ServletContextEvent
8. ServletRequestAttributeEvent
9. ServletContextAttributeEvent
10. ServletException
11. UnavailableException
1. HttpServletRequest
2. HttpServletResponse
3. HttpSession
4. HttpSessionListener
5. HttpSessionAttributeListener
6. HttpSessionBindingListener
7. HttpSessionActivationListener
8. HttpSessionContext (deprecated now)
1. HttpServlet
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
11 | P a g e Code MicroSystem Arvind Sir 9822939054
2. Cookie
3. HttpServletRequestWrapper
4. HttpServletResponseWrapper
5. HttpSessionEvent
6. HttpSessionBindingEvent
7. HttpUtils (deprecated now)
Servlet Interface
Servlet interface provides common behaviour to all the servlets.
Servlet interface needs to be implemented for creating any servlet (either directly or indirectly).
It provides 3 life cycle methods that are used to initialize the servlet, to service the requests, and
to destroy the servlet and 2 non-life cycle methods.
There are 5 methods in Servlet interface. The init, service and destroy are the life cycle methods
of servlet. These are invoked by the web container.
Method Description
initializes the servlet. It is the life cycle method of
public void init(ServletConfig config) servlet and invoked by the web container only
once.
public void service(ServletRequest provides response for the incoming request. It is
request,ServletResponse response) invoked at each request by the web container.
is invoked only once and indicates that servlet is
public void destroy()
being destroyed.
public ServletConfig getServletConfig() returns the object of ServletConfig.
returns information about servlet such as writer,
public String getServletInfo()
copyright, version etc.
Let's see the simple example of servlet by implementing the servlet interface.
File: [Link]
1. import [Link].*;
2. import [Link].*;
3.
4. public class First implements Servlet{
5. ServletConfig config=null;
6.
7. public void init(ServletConfig config){
8. [Link]=config;
9. [Link]("servlet is initialized");
10. }
11.
12. public void service(ServletRequest req,ServletResponse res)
13. throws IOException,ServletException{
14.
15. [Link]("text/html");
16.
17. PrintWriter out=[Link]();
18. [Link]("<html><body>");
19. [Link]("<b>hello simple servlet</b>");
20. [Link]("</body></html>");
21.
22. }
23. public void destroy(){[Link]("servlet is destroyed");}
24. public ServletConfig getServletConfig(){return config;}
25. public String getServletInfo(){return "copyright 2014-15";}
26.
27. }
GenericServlet class
You may create a generic servlet by inheriting the GenericServlet class and providing the
implementation of the service method.
Let's see the simple example of servlet by inheriting the GenericServlet class.
File: [Link]
1. import [Link].*;
2. import [Link].*;
3.
4. public class First extends GenericServlet{
5. public void service(ServletRequest req,ServletResponse res)
6. throws IOException,ServletException{
7.
8. [Link]("text/html");
9.
10. PrintWriter out=[Link]();
11. [Link]("<html><body>");
12. [Link]("<b>hello Arvind Sir</b>");
13. [Link]("</body></html>");
14.
15. }
16. }
HttpServlet class
The HttpServlet class extends the GenericServlet class and implements Serializable interface. It
provides http specific methods such as doGet, doPost, doHead, doTrace etc.
As displayed in the above diagram, there are three states of a servlet: new, ready and end. 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.
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.
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.
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 [Link]
interface. Syntax of the init method is given below:
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. The syntax of the service method of the Servlet interface is given below:
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. The syntax of the destroy method of the Servlet interface is given below:
The mostly used approach is by extending HttpServlet because it provides http request specific
method such as doGet(), doPost(), doHead() etc.
Here, we are going to use apache tomcat server in this example. The steps are as follows:
The directory structure defines that where to put the different types of files so that web
container may get the information and respond to the client.
The Sun Microsystem defines a unique standard to be followed by all the server vendors. Let's
see the directory structure that must be followed to create the servlet.
As you can see that the servlet class file must be in the classes folder. The [Link] file must be
under the WEB-INF folder.
2)Create a Servlet
The HttpServlet class is widely used to create the servlet because it provides methods to handle http
requests such as doGet(), doPost, doHead() etc.
In this example we are going to create a servlet that extends the HttpServlet class. In this example, we
are inheriting the HttpServlet class and providing the implementation of the doGet() method. Notice
that get request is the default request.
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4. public class DemoServlet extends HttpServlet{
5. public void doGet(HttpServletRequest req,HttpServletResponse res)
6. throws ServletException,IOException
7. {
8. [Link]("text/html");//setting the content type
9. PrintWriter pw=[Link]();//get the stream to write the data
10.
11. //writing html in the stream
12. [Link]("<html><body>");
13. [Link]("Welcome to servlet");
14. [Link]("</body></html>");
15.
16. [Link]();//closing the stream
17. }}
For compiling the Servlet, jar file is required to be loaded. Different Servers provide different jar
files:
2) [Link] Weblogic
3) [Link] Glassfish
4) [Link] JBoss
1. set classpath
2. paste the jar file in JRE/lib/ext folder
Put the java file in any folder. After compiling the java file, paste the class file of servlet in
WEB-INF/classes directory.
The deployment descriptor is an xml file, from which Web Container gets the information
about the servet to be invoked.
The web container uses the Parser to get the information from the [Link] file. There are many
xml parsers such as SAX, DOM and Pull.
There are many elements in the [Link] file. Here is given some necessary elements to run the
simple servlet program.
[Link] file
1. <web-app>
2.
3. <servlet>
4. <servlet-name>microsystem</servlet-name>
5. <servlet-class>DemoServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>microsystem</servlet-name>
10. <url-pattern>/welcome</url-pattern>
11. </servlet-mapping>
12.
13. </web-app>
There are too many elements in the [Link] file. Here is the illustration of some elements that is
used in the above [Link] file. The elements are as follows:
<url-pattern> is sub element of <servlet-mapping>. This pattern is used at client side to invoke the
servlet.
To start Apache Tomcat server, double click on the [Link] file under apache-tomcat/bin
directory.
To start Apache Tomcat server JAVA_HOME and JRE_HOME must be set in Environment
variables.
Go to My Computer properties -> Click on advanced tab then environment variables -> Click on
the new tab of user variable -> Write JAVA_HOME in variable name and paste the path of jdk
folder in variable value -> ok -> ok -> ok.
Go to My Computer properties:
Write JAVA_HOME in variable name and paste the path of jdk folder in variable value:
After setting the JAVA_HOME double click on the [Link] file in apache tomcat/bin.
Changing the port number is required if there is another server running on the same system with
same port [Link] you have installed oracle, you need to change the port number of
apache tomcat because both have the default port number 8080.
Open [Link] file in notepad. It is located inside the apache-tomcat/conf directory . Change
the Connector port = 8080 and replace 8080 by any four digit number instead of 8080. Let us
replace it by 9999 and save this file.
Copy the project and paste it in the webapps folder under apache tomcat.
But there are several ways to deploy the project. They are as follows:
You can also create war file, and paste it inside the webapps directory. To do so, you need to use
jar tool to create the war file. Go inside the project directory (before the WEB-INF), then write:
Creating war file has an advantage that moving the project from one location to another takes
less time.
1. [Link]
The server checks if the servlet is requested for the first time.
else
The web container calls the destroy method when it needs to remove the servlet such as at time
of stopping server or undeploying the project.
The web container is responsible to handle the request. Let's see how it handles the request.
The public service method converts the ServletRequest object into the HttpServletRequest type
and ServletResponse object into the HttpServletResponse type. Then, calls the service method
passing these objects. Let's see the internal code:
The protected service method checks the type of request, if request type is get, it calls doGet
method, if request type is post, it calls doPost method, so on. Let's see the internal code:
War File
A war (web archive) File contains files of a web project. It may have servlet, xml, jsp, image,
html, css, js etc. files.
Here, we will discuss what is war file, how to create war file, how to deploy war file and how to
extract war file.
Go inside the project directory of your project (outside the WEB-INF), then write the following
command:
Here, -c is used to create file, -v to generate the verbose output and -f to specify the arhive file
name.
The * (asterisk) symbol signifies that all the files of this directory (including sub directory).
If you want to deploy the war file in apache tomcat server manually, go to the webapps
directory of apache tomcat and paste the war file here.
Now, you are able to access the web project through browser.
welcome-file-list in [Link]
The welcome-file-list element of web-app, is used to define a list of welcome files. Its sub
element is welcome-file that is used to define the welcome file.
A welcome file is the file that is invoked automatically by the server, if you don't specify any file
name.
1. welcome-file-list in [Link]
2. [Link]
3. [Link]
4. [Link]
If you have specified welcome-file in [Link], and all the files [Link], [Link] and
[Link] exists, priority goes to welcome-file.
If welcome-file-list entry doesn't exist in [Link] file, priority goes to [Link] file then
[Link] and at last [Link] file.
Let's see the [Link] file that defines the welcome files.
[Link]
1. <web-app>
2. ....
3.
4. <welcome-file-list>
5. <welcome-file>[Link]</welcome-file>
6. <welcome-file>[Link]</welcome-file>
7. </welcome-file-list>
8. </web-app>
If you have the welcome file, you can directory invoke the project as given below:
1. [Link]
You can pass positive and negative value for the servlet.
As you know well, servlet is loaded at first request. That means it consumes more time at first
request. If you specify the load-on-startup in [Link], servlet will be loaded at project
deployment time or server start. So, it will take less time for responding to first request.
If you pass the positive value, the lower integer value servlet will be loaded before the higher
integer value servlet. In other words, container loads the servlets in ascending integer value. The
0 value will be loaded first then 1, 2, 3 and so on.
[Link]
1. <web-app>
2. ....
3.
4. <servlet>
5. <servlet-name>servlet1</servlet-name>
6. <servlet-class> [Link]</servlet-class>
7. <load-on-startup>0</load-on-startup>
8. </servlet>
9.
10. <servlet>
11. <servlet-name>servlet2</servlet-name>
12. <servlet-class>[Link]</servlet-class>
13. <load-on-startup>1</load-on-startup>
14. </servlet>
15.
16. ...
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
37 | P a g e Code MicroSystem Arvind Sir 9822939054
17. </web-app>
There are defined 2 servlets, both servlets will be loaded at the time of project deployment or
server start. But, servlet1 will be loaded first then servlet2.
If you pass the negative value, servlet will be loaded at request time, at first request.
Creating servlet example in eclipse ide, saves a lot of work to be done. It is easy and simple to
create a servlet example. Let's see the steps, you need to follow to create the first servlet
example.
For creating a dynamic web project click on File Menu -> New -> Project..-> Web -> dynamic
web project -> write your project name e.g. first -> Finish.
For creating a servlet, explore the project by clicking the + icon -> explore the Java
Resources -> right click on src -> New -> servlet -> write your servlet name e.g. Hello ->
uncheck all the checkboxes except doGet() -> next -> Finish.
For adding a jar file, right click on your project -> Build Path -> Configure Build Path ->
click on Libraries tab in Java Build Path -> click on Add External JARs button -> select
the [Link] file under tomcat/lib -> ok.
Now servlet has been created, Let's write the first servlet code.
For starting the server and deploying the project in one step, Right click on your project ->
Run As -> Run on Server -> choose tomcat server -> next -> addAll -> finish.
Now tomcat server has been started and project is deployed. To access the servlet write the url
pattern name in the URL bar of the browser. In this case Hello then enter.
If you are using Eclipse IDE first time, you need to configure the tomcat server First.
For configuring the tomcat server in eclipse IDE, click on servers tab at the bottom side of the
IDE -> right click on blank area -> New -> Servers -> choose tomcat then its version ->
next -> click on Browse button -> select the apache tomcat root folder previous to bin ->
next -> addAll -> Finish.
ServletRequest Interface
An object of ServletRequest is used to provide the client request information to a servlet such as
content type, content length, parameter names and values, header informations, attributes etc.
Methods of Servlet
Request interface
There are many methods defined in the ServletRequest interface. Some of them are as follows:
Method Description
public String getParameter(String
is used to obtain the value of a parameter by name.
name)
returns an array of String containing all values of
public String[]
given parameter name. It is mainly used to obtain
getParameterValues(String name)
values of a Multi select list box.
[Link] returns an enumeration of all of the request
getParameterNames() parameter names.
Returns the size of the request entity data, or -1 if not
public int getContentLength()
known.
Returns the character set encoding for the input of
public String getCharacterEncoding()
this request.
Returns the Internet Media Type of the request entity
public String getContentType()
data, or null if not known.
public ServletInputStream Returns an input stream for reading binary data in the
getInputStream() throws IOException request body.
Returns the host name of the server that received the
public abstract String getServerName()
request.
Returns the port number on which this request was
public int getServerPort()
received.
In this example, we are displaying the name of the user in the servlet. For this purpose, we have
used the getParameter method that returns the value for the given request parameter name.
[Link]
[Link]
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
70 | P a g e Code MicroSystem Arvind Sir 9822939054
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4. public class DemoServ extends HttpServlet{
5. public void doGet(HttpServletRequest req,HttpServletResponse res)
6. throws ServletException,IOException
7. {
8. [Link]("text/html");
9. PrintWriter pw=[Link]();
10.
11. String name=[Link]("name");//will return value
12. [Link]("Welcome "+name);
13.
14. [Link]();
15. }}
RequestDispatcher in Servlet
The RequestDispacher interface provides the facility of dispatching the request to another
resource it may be html, servlet or [Link] interface can also be used to include the content of
antoher resource also. It is one of the way of servlet collaboration.
As you see in the above figure, response of second servlet is sent to the client. Response of the
first servlet is not displayed to the user.
As you can see in the above figure, response of second servlet is included in the response of the first
servlet that is being sent to the client.
1. RequestDispatcher rd=[Link]("servlet2");
2. //servlet2 is the url-pattern of the second servlet
3.
4. [Link](request, response);//method may be include or forward
In this example, we are validating the password entered by the user. If password is servlet, it will
forward the request to the WelcomeServlet, otherwise will show an error message: sorry
username or password error!. In this program, we are cheking for hardcoded information. But
you can check it to the database also that we will see in the development chapter. In this
example, we have created following files:
[Link]
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class Login extends HttpServlet {
7.
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5. public class WelcomeServlet extends HttpServlet {
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
75 | P a g e Code MicroSystem Arvind Sir 9822939054
6.
7. public void doPost(HttpServletRequest request, HttpServletResponse response)
8. throws ServletException, IOException {
9.
10. [Link]("text/html");
11. PrintWriter out = [Link]();
12.
13. String n=[Link]("userName");
14. [Link]("Welcome "+n);
15. }
16.
17. }
[Link]
1. <web-app>
2. <servlet>
3. <servlet-name>Login</servlet-name>
4. <servlet-class>Login</servlet-class>
5. </servlet>
6. <servlet>
7. <servlet-name>WelcomeServlet</servlet-name>
8. <servlet-class>WelcomeServlet</servlet-class>
9. </servlet>
10.
11.
12. <servlet-mapping>
13. <servlet-name>Login</servlet-name>
14. <url-pattern>/servlet1</url-pattern>
15. </servlet-mapping>
16. <servlet-mapping>
17. <servlet-name>WelcomeServlet</servlet-name>
18. <url-pattern>/servlet2</url-pattern>
19. </servlet-mapping>
20.
21. <welcome-file-list>
22. <welcome-file>[Link]</welcome-file>
23. </welcome-file-list>
24. </web-app>
SendRedirect in servlet
The sendRedirect() method of HttpServletResponse interface can be used to redirect response
to another resource, it may be servlet, jsp or html file.
It works at client side because it uses the url bar of the browser to make another request. So, it
can work inside and outside the server.
It sends the same request and response objects to another servlet. It always sends a new request.
Example: Example:
[Link]("servlet2").forward(request,response) [Link]("servlet2")
; ;
[Link]("[Link]
In this example, we are redirecting the request to the google server. Notice that sendRedirect method
works at client side, that is why we can our request to anywhere. We can send our request within and
outside the server.
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
79 | P a g e Code MicroSystem Arvind Sir 9822939054
In this example, we are using sendRedirect method to send request to google server with the
request data.
[Link]
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="ISO-8859-1">
5. <title>sendRedirect example</title>
6. </head>
7. <body>
8.
9.
10. <form action="MySearcher">
11. <input type="text" name="name">
12. <input type="submit" value="Google Search">
13. </form>
14.
15. </body>
16. </html>
[Link]
1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link];
5. import [Link];
6.
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
80 | P a g e Code MicroSystem Arvind Sir 9822939054
Output
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 [Link] file.
If the configuration information is modified from the [Link] file, we don't need to change the
servlet. So it is easier to manage the web application if any specific content is modified from
time to time.
Advantage of ServletConfig
The core advantage of ServletConfig is that you don't need to edit the servlet file if information
is modified from the [Link] file.
1. public String getInitParameter(String name):Returns the parameter value for the specified
parameter name.
2. public Enumeration getInitParameterNames():Returns an enumeration of all the initialization
parameter names.
3. public String getServletName():Returns the name of the servlet.
4. public ServletContext getServletContext():Returns an object of ServletContext.
ServletConfig config=getServletConfig();
The init-param sub-element of servlet is used to specify the initialization parameter for a servlet.
1. <web-app>
2. <servlet>
3. ......
4.
5. <init-param>
6. <param-name>parametername</param-name>
7. <param-value>parametervalue</param-value>
8. </init-param>
9. </servlet>
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
85 | P a g e Code MicroSystem Arvind Sir 9822939054
10. </web-app>
In this example, we are getting the one initialization parameter from the [Link] file and
printing this information in the servlet.
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5. public class DemoServlet extends HttpServlet {
6. public void doGet(HttpServletRequest request, HttpServletResponse response)
7. throws ServletException, IOException {
8.
9. [Link]("text/html");
10. PrintWriter out = [Link]();
11.
12. ServletConfig config=getServletConfig();
13. String driver=[Link]("driver");
14. [Link]("Driver is: "+driver);
15.
16. [Link]();
17. }
18.
19. }
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>DemoServlet</servlet-name>
5. <servlet-class>DemoServlet</servlet-class>
6.
7. <init-param>
8. <param-name>driver</param-name>
9. <param-value>[Link]</param-value>
10. </init-param>
11.
12. </servlet>
13.
14. <servlet-mapping>
15. <servlet-name>DemoServlet</servlet-name>
16. <url-pattern>/servlet1</url-pattern>
17. </servlet-mapping>
18.
19. </web-app>
In this example, we are getting all the initialization parameter from the [Link] file and printing
this information in the servlet.
[Link]
1. import [Link];
2. import [Link];
3. import [Link];
4.
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9. import [Link];
10.
11.
12. public class DemoServlet extends HttpServlet {
13. public void doGet(HttpServletRequest request, HttpServletResponse response)
14. throws ServletException, IOException {
15.
16. [Link]("text/html");
17. PrintWriter out = [Link]();
18.
19. ServletConfig config=getServletConfig();
20. Enumeration<String> e=[Link]();
21.
22. String str="";
23. while([Link]()){
24. str=[Link]();
25. [Link]("<br>Name: "+str);
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>DemoServlet</servlet-name>
5. <servlet-class>DemoServlet</servlet-class>
6.
7. <init-param>
8. <param-name>username</param-name>
9. <param-value>system</param-value>
10. </init-param>
11.
12. <init-param>
13. <param-name>password</param-name>
14. <param-value>oracle</param-value>
15. </init-param>
16.
17. </servlet>
18.
19. <servlet-mapping>
20. <servlet-name>DemoServlet</servlet-name>
21. <url-pattern>/servlet1</url-pattern>
22. </servlet-mapping>
23.
24. </web-app>
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 [Link] file. There is only one
ServletContext object per web application.
If any information is shared to many servlet, it is better to provide it from the [Link] file using
the <context-param> element.
Advantage of ServletContext
Easy to maintain if any information is shared to all the servlet, it is better to make it available
for all the servlet. We provide this information from the [Link] file, so if the information is
changed, we don't need to modify the servlet. Thus it removes maintenance problem.
There can be a lot of usage of ServletContext object. Some of them are as follows:
1. The object of ServletContext provides an interface between the container and servlet.
2. The ServletContext object can be used to get configuration information from the [Link] file.
3. The ServletContext object can be used to set, get or remove attribute from the [Link] file.
4. The ServletContext object can be used to provide inter-application communication.
1. public String getInitParameter(String name):Returns the parameter value for the specified
parameter name.
2. public Enumeration getInitParameterNames():Returns the names of the context's initialization
parameters.
3. public void setAttribute(String name,Object object):sets the given object in the application
scope.
4. public Object getAttribute(String name):Returns the attribute for the specified name.
5. public Enumeration getInitParameterNames():Returns the names of the context's initialization
parameters as an Enumeration of String objects.
6. public void removeAttribute(String name):Removes the attribute with the given name from the
servlet context.
The context-param element, subelement of web-app, is used to define the initialization parameter in
the application scope. The param-name and param-value are the sub-elements of the context-param.
The param-name element defines parameter name and and param-value defines its value.
1. <web-app>
2. ......
3.
4. <context-param>
5. <param-name>parametername</param-name>
6. <param-value>parametervalue</param-value>
7. </context-param>
8. ......
9. </web-app>
In this example, we are getting the initialization parameter from the [Link] file and printing the value
of the initialization parameter. Notice that the object of ServletContext represents the application
scope. So if we change the value of the parameter from the [Link] file, all the servlet classes will get
the changed value. So we don't need to modify the servlet. So it is better to have the common
information for most of the servlets in the [Link] file by context-param element. Let's see the simple
example:
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class DemoServlet extends HttpServlet{
7. public void doGet(HttpServletRequest req,HttpServletResponse res)
8. throws ServletException,IOException
9. {
10. [Link]("text/html");
11. PrintWriter pw=[Link]();
12.
13. //creating ServletContext object
14. ServletContext context=getServletContext();
15.
16. //Getting the value of the initialization parameter and printing it
17. String driverName=[Link]("dname");
18. [Link]("driver name is="+driverName);
19.
20. [Link]();
21.
22. }}
[Link]
1. <web-app>
2.
3. <servlet>
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
91 | P a g e Code MicroSystem Arvind Sir 9822939054
4. <servlet-name>microsystem</servlet-name>
5. <servlet-class>DemoServlet</servlet-class>
6. </servlet>
7.
8. <context-param>
9. <param-name>dname</param-name>
10. <param-value>[Link]</param-value>
11. </context-param>
12.
13. <servlet-mapping>
14. <servlet-name>microsystem</servlet-name>
15. <url-pattern>/context</url-pattern>
16. </servlet-mapping>
17.
18. </web-app>
In this example, we are getting all the initialization parameter from the [Link] file. For getting all the
parameters, we have used the getInitParameterNames() method in the servlet class.
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class DemoServlet extends HttpServlet{
7. public void doGet(HttpServletRequest req,HttpServletResponse res)
8. throws ServletException,IOException
9. {
10. [Link]("text/html");
11. PrintWriter out=[Link]();
12.
13. ServletContext context=getServletContext();
14. Enumeration<String> e=[Link]();
15.
16. String str="";
17. while([Link]()){
18. str=[Link]();
19. [Link]("<br> "+[Link](str));
20. }
21. }}
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>microsystem</servlet-name>
5. <servlet-class>DemoServlet</servlet-class>
6. </servlet>
7.
8. <context-param>
9. <param-name>dname</param-name>
10. <param-value>[Link]</param-value>
11. </context-param>
12.
13. <context-param>
14. <param-name>username</param-name>
15. <param-value>system</param-value>
16. </context-param>
17.
18. <context-param>
19. <param-name>password</param-name>
20. <param-value>oracle</param-value>
21. </context-param>
22.
23. <servlet-mapping>
24. <servlet-name>microsystem</servlet-name>
25. <url-pattern>/context</url-pattern>
26. </servlet-mapping>
27.
28. </web-app>
Attribute in Servlet
An attribute in servlet is an object that can be set, get or removed from one of the following
scopes:
1. request scope
2. session scope
3. application scope
The servlet programmer can pass informations from one servlet to another using attributes. It is
just like passing object from one class to another so that we can reuse the same object again and
again.
In this example, we are setting the attribute in the application scope and getting that value from
another servlet.
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class DemoServlet1 extends HttpServlet{
[Link]("text/html");
PrintWriter out=[Link]();
ServletContext sc=getServletContext();
[Link]("companyName", "Code MicroSystem");
[Link]("<a href='NextServlet'> Visit</a>");
[Link]();
}}
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class NextServlet extends HttpServlet{
7. public void doGet(HttpServletRequest req,HttpServletResponse res)
8. {
9. try{
10.
11. [Link]("text/html");
12. PrintWriter out=[Link]();
13.
14. ServletContext context=getServletContext();
15. String n=(String)[Link]("companyName ");
16.
17. [Link]("Welcome to "+n);
18. [Link]();
19.
20. }catch(Exception e){[Link](e);}
21.
22. }}
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>s1</servlet-name>
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
95 | P a g e Code MicroSystem Arvind Sir 9822939054
5. <servlet-class>DemoServlet1</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>s1</servlet-name>
10. <url-pattern>/servlet1</url-pattern>
11. </servlet-mapping>
12.
13. <servlet>
14. <servlet-name>s2</servlet-name>
15. <servlet-class>DemoServlet2</servlet-class>
16. </servlet>
17.
18. <servlet-mapping>
19. <servlet-name>s2</servlet-name>
20. <url-pattern>/servlet2</url-pattern>
21. </servlet-mapping>
22.
23. </web-app>
The servletconfig object refers to the single servlet whereas servletcontext object refers to the
whole web application.
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. It is shown in the
figure given below:
1. Cookies
2. Hidden Form Field
3. URL Rewriting
4. HttpSession
Cookies in Servlet
A cookie is a small piece of information that is persisted between the multiple client
requests.
A cookie has a name, a single value, and optional attributes such as a comment, path and
domain qualifiers, a maximum age, and a version number.
By default, each request is considered as a new request. 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.
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.
Advantage of Cookies
Disadvantage of Cookies
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
98 | P a g e Code MicroSystem Arvind Sir 9822939054
Note: Gmail uses cookie technique for login. If you disable the cookie, gmail won't work.
Cookie class
Constructor Description
Cookie(String name, String value) constructs a cookie with a specified name and value.
There are given some commonly used methods of the Cookie class.
Method Description
Returns the name of the cookie. The name cannot be changed after
public String getName()
creation.
For adding cookie or getting the value from the cookie, we need some methods provided by other
interfaces. They are:
Let's see the simple code to delete cookie. It is mainly used to logout or signout the user.
1. Cookie ck[]=[Link]();
2. for(int i=0;i<[Link];i++){
3. [Link]("<br>"+ck[i].getName()+" "+ck[i].getValue());//printing name and value of cookie
4. }
In this example, we are storing the name of the user in the cookie object and accessing it in
another servlet. As we know well that session corresponds to the particular user. So if you access
it from too many browsers with different values, you will get the different value.
[Link]
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class FirstServlet extends HttpServlet {
7.
8. public void doPost(HttpServletRequest request, HttpServletResponse response){
9. try{
10.
11. [Link]("text/html");
12. PrintWriter out = [Link]();
13.
14. String n=[Link]("userName");
15. [Link]("Welcome "+n);
16.
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
101 | P a g e Code MicroSystem Arvind Sir 9822939054
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5. public class SecondServlet extends HttpServlet {
6.
7. public void doPost(HttpServletRequest request, HttpServletResponse response){
8. try{
9.
10. [Link]("text/html");
11. PrintWriter out = [Link]();
12.
13. Cookie ck[]=[Link]();
14. [Link]("Hello "+ck[0].getValue());
15.
16. [Link]();
17.
18. }catch(Exception e){[Link](e);}
19. }
20.
21.
22. }
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>s1</servlet-name>
5. <servlet-class>FirstServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>s1</servlet-name>
10. <url-pattern>/servlet1</url-pattern>
11. </servlet-mapping>
12.
13. <servlet>
14. <servlet-name>s2</servlet-name>
15. <servlet-class>SecondServlet</servlet-class>
16. </servlet>
17.
18. <servlet-mapping>
19. <servlet-name>s2</servlet-name>
20. <url-pattern>/servlet2</url-pattern>
21. </servlet-mapping>
22.
23. </web-app>
Output::
In the previous page, we learned a lot about cookie e.g. how to create cookie, how to delete
cookie, how to get cookie etc.
Here, we are going to create a login and logout example using servlet cookies.
In this example, we are creating 3 links: login, logout and profile. User can't go to profile page
until he/she is logged in. If user is logged out, he need to login again to visit profile.
1. [Link]
2. [Link]
3. [Link]
4. [Link]
5. [Link]
6. [Link]
7. [Link]
File: [Link]
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="ISO-8859-1">
5. <title>Servlet Login Example</title>
6. </head>
7. <body>
8.
9. <h1>Welcome to Login App by Cookie</h1>
10. <a href="[Link]">Login</a>|
11. <a href="LogoutServlet">Logout</a>|
12. <a href="ProfileServlet">Profile</a>
13.
14. </body>
15. </html>
File: [Link]
1. <a href="[Link]">Login</a> |
2. <a href="LogoutServlet">Logout</a> |
3. <a href="ProfileServlet">Profile</a>
4. <hr>
File: [Link]
File: [Link]
1. package [Link];
2.
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9. import [Link];
10. public class LoginServlet extends HttpServlet {
11. protected void doPost(HttpServletRequest request, HttpServletResponse response)
12. throws ServletException, IOException {
13. [Link]("text/html");
14. PrintWriter out=[Link]();
15.
16. [Link]("[Link]").include(request, response);
17.
18. String name=[Link]("name");
19. String password=[Link]("password");
20.
21. if([Link]("admin123")){
22. [Link]("You are successfully logged in!");
23. [Link]("<br>Welcome, "+name);
24.
25. Cookie ck=new Cookie("name",name);
26. [Link](ck);
27. }else{
28. [Link]("sorry, username or password error!");
29. [Link]("[Link]").include(request, response);
30. }
31.
32. [Link]();
33. }
34.
35. }
File: [Link]
1. package [Link];
2.
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9. import [Link];
10. public class LogoutServlet extends HttpServlet {
11. protected void doGet(HttpServletRequest request, HttpServletResponse response)
12. throws ServletException, IOException {
13. [Link]("text/html");
14. PrintWriter out=[Link]();
15.
16.
17. [Link]("[Link]").include(request, response);
18.
19. Cookie ck=new Cookie("name","");
20. [Link](0);
21. [Link](ck);
22.
23. [Link]("you are successfully logged out!");
24. }
25. }
File: [Link]
1. package [Link];
2.
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9. import [Link];
10. public class ProfileServlet extends HttpServlet {
11. protected void doGet(HttpServletRequest request, HttpServletResponse response)
12. throws ServletException, IOException {
13. [Link]("text/html");
14. PrintWriter out=[Link]();
15.
16. [Link]("[Link]").include(request, response);
17.
18. Cookie ck[]=[Link]();
19. if(ck!=null){
20. String name=ck[0].getValue();
21. if(||name!=null){
22. [Link]("<b>Welcome to Profile</b>");
23. [Link]("<br>Welcome, "+name);
24. }
25. }else{
26. [Link]("Please login first");
27. [Link]("[Link]").include(request, response);
28. }
29. [Link]();
30. }
31. }
File: [Link]
35. </servlet-mapping>
36. </web-app>
Output
In such case, we store the information in the hidden field and get it from another servlet. This
approach is better if we have to submit form in all the pages and we don't want to depend on the
browser.
Here, uname is the hidden field name and Code Microsyste is the hidden field value.
It is widely used in comment form of a website. In such case, we store page id or page name in
the hidden field so that each page can be uniquely identified.
In this example, we are storing the name of the user in a hidden textfield and getting that value
from another servlet.
[Link]
1. <form action="servlet1">
2. Name:<input type="text" name="userName"/><br/>
3. <input type="submit" value="go"/>
4. </form>
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5. public class FirstServlet extends HttpServlet {
6. public void doGet(HttpServletRequest request, HttpServletResponse response){
7. try{
8.
9. [Link]("text/html");
10. PrintWriter out = [Link]();
11.
12. String n=[Link]("userName");
13. [Link]("Welcome "+n);
14.
15. //creating form that have invisible textfield
16. [Link]("<form action='servlet2'>");
17. [Link]("<input type='hidden' name='uname' value='"+n+"'>");
18. [Link]("<input type='submit' value='go'>");
19. [Link]("</form>");
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
112 | P a g e Code MicroSystem Arvind Sir 9822939054
20. [Link]();
21.
22. }catch(Exception e){[Link](e);}
23. }
24.
25. }
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4. public class SecondServlet extends HttpServlet {
5. public void doGet(HttpServletRequest request, HttpServletResponse response)
6. try{
7. [Link]("text/html");
8. PrintWriter out = [Link]();
9.
10. //Getting the value from the hidden field
11. String n=[Link]("uname");
12. [Link]("Hello "+n);
13.
14. [Link]();
15. }catch(Exception e){[Link](e);}
16. }
17. }
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>s1</servlet-name>
5. <servlet-class>FirstServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>s1</servlet-name>
10. <url-pattern>/servlet1</url-pattern>
11. </servlet-mapping>
12.
13. <servlet>
14. <servlet-name>s2</servlet-name>
15. <servlet-class>SecondServlet</servlet-class>
16. </servlet>
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
113 | P a g e Code MicroSystem Arvind Sir 9822939054
17.
18. <servlet-mapping>
19. <servlet-name>s2</servlet-name>
20. <url-pattern>/servlet2</url-pattern>
21. </servlet-mapping>
22.
23. </web-app>
3)URL Rewriting
In URL rewriting, we append a token or identifier to the URL of the next Servlet or the next
resource. We can send parameter name/value pairs using the following format:
url?name1=value1&name2=value2&??
A name and a value is separated using an equal = sign, a parameter name/value pair is separated
from another parameter using the ampersand(&). When the user clicks the hyperlink, the
parameter name/value pairs will be passed to the server. From a Servlet, we can use
getParameter() method to obtain a parameter value.
In this example, we are maintaning the state of the user using link. For this purpose, we are
appending the name of the user in the query string and getting the value from the query string in
another page.
[Link]
1. <form action="servlet1">
2. Name:<input type="text" name="userName"/><br/>
3. <input type="submit" value="go"/>
4. </form>
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class FirstServlet extends HttpServlet {
7.
8. public void doGet(HttpServletRequest request, HttpServletResponse response){
9. try{
10.
11. [Link]("text/html");
12. PrintWriter out = [Link]();
13.
14. String n=[Link]("userName");
15. [Link]("Welcome "+n);
16.
17. //appending the username in the query string
18. [Link]("<a href='servlet2?uname="+n+"'>visit</a>");
19.
20. [Link]();
21.
22. }catch(Exception e){[Link](e);}
23. }
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
115 | P a g e Code MicroSystem Arvind Sir 9822939054
24.
25. }
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5. public class SecondServlet extends HttpServlet {
6.
7. public void doGet(HttpServletRequest request, HttpServletResponse response)
8. try{
9.
10. [Link]("text/html");
11. PrintWriter out = [Link]();
12.
13. //getting value from the query string
14. String n=[Link]("uname");
15. [Link]("Hello "+n);
16.
17. [Link]();
18.
19. }catch(Exception e){[Link](e);}
20. }
21.
22.
23. }
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>s1</servlet-name>
5. <servlet-class>FirstServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>s1</servlet-name>
10. <url-pattern>/servlet1</url-pattern>
11. </servlet-mapping>
12.
13. <servlet>
14. <servlet-name>s2</servlet-name>
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
116 | P a g e Code MicroSystem Arvind Sir 9822939054
15. <servlet-class>SecondServlet</servlet-class>
16. </servlet>
17.
18. <servlet-mapping>
19. <servlet-name>s2</servlet-name>
20. <url-pattern>/servlet2</url-pattern>
21. </servlet-mapping>
22.
23. </web-app>
4) HttpSession interface
In such case, container creates a session id for each [Link] container uses this id to identify the
particular [Link] object of HttpSession can be used to perform two tasks:
1. bind objects
2. view and manipulate information about a session, such as the session identifier, creation
time, and last accessed time.
The HttpServletRequest interface provides two methods to get the object of HttpSession:
1. public HttpSession getSession():Returns the current session associated with this request,
or if the request does not have a session, creates one.
2. 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.
In this example, we are setting the attribute in the session scope in one servlet and getting that
value from the session scope in another servlet. To set the attribute in the session scope, we have
used the setAttribute() method of HttpSession interface and to get the attribute, we have used the
getAttribute method.
[Link]
1. <form action="servlet1">
2. Name:<input type="text" name="userName"/><br/>
3. <input type="submit" value="go"/>
4. </form>
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5.
6. public class FirstServlet extends HttpServlet {
7.
8. public void doGet(HttpServletRequest request, HttpServletResponse response){
9. try{
10.
11. [Link]("text/html");
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
118 | P a g e Code MicroSystem Arvind Sir 9822939054
[Link]
1. import [Link].*;
2. import [Link].*;
3. import [Link].*;
4.
5. public class SecondServlet extends HttpServlet {
6.
7. public void doGet(HttpServletRequest request, HttpServletResponse response)
8. try{
9.
10. [Link]("text/html");
11. PrintWriter out = [Link]();
12.
13. HttpSession session=[Link](false);
14. String n=(String)[Link]("uname");
15. [Link]("Hello "+n);
16.
17. [Link]();
18.
19. }catch(Exception e){[Link](e);}
20. }
21.
22.
23. }
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>s1</servlet-name>
5. <servlet-class>FirstServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>s1</servlet-name>
10. <url-pattern>/servlet1</url-pattern>
11. </servlet-mapping>
12.
13. <servlet>
14. <servlet-name>s2</servlet-name>
15. <servlet-class>SecondServlet</servlet-class>
16. </servlet>
17.
18. <servlet-mapping>
19. <servlet-name>s2</servlet-name>
20. <url-pattern>/servlet2</url-pattern>
21. </servlet-mapping>
22.
23. </web-app>
In the previous page, we have learnt about what is HttpSession, How to store and get data from
session object etc.
Here, we are going to create a real world login and logout application without using database
code. We are assuming that password is admin123.
Visit here for login and logout application using cookies only servlet login and logout example
using cookies
In this example, we are creating 3 links: login, logout and profile. User can't go to profile page
until he/she is logged in. If user is logged out, he need to login again to visit profile.
1. [Link]
2. [Link]
3. [Link]
4. [Link]
5. [Link]
6. [Link]
7. [Link]
File: [Link]
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="ISO-8859-1">
5. <title>Servlet Login Example</title>
6. </head>
7. <body>
8.
9. <h1>Login App using HttpSession</h1>
10. <a href="[Link]">Login</a>|
11. <a href="LogoutServlet">Logout</a>|
12. <a href="ProfileServlet">Profile</a>
13.
14. </body>
15. </html>
File: [Link]
1. <a href="[Link]">Login</a> |
2. <a href="LogoutServlet">Logout</a> |
3. <a href="ProfileServlet">Profile</a>
4. <hr>
File: [Link]
File: [Link]
1. import [Link];
2. import [Link];
3.
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9. public class LoginServlet extends HttpServlet {
10. protected void doPost(HttpServletRequest request, HttpServletResponse response)
11. throws ServletException, IOException {
12. [Link]("text/html");
13. PrintWriter out=[Link]();
14. [Link]("[Link]").include(request, response);
15.
16. String name=[Link]("name");
17. String password=[Link]("password");
18.
19. if([Link]("admin123")){
20. [Link]("Welcome, "+name);
21. HttpSession session=[Link]();
22. [Link]("name",name);
23. }
24. else{
25. [Link]("Sorry, username or password error!");
26. [Link]("[Link]").include(request, response);
27. }
28. [Link]();
29. }
30. }
File: [Link]
1. import [Link];
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
122 | P a g e Code MicroSystem Arvind Sir 9822939054
2. import [Link];
3.
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9. public class LogoutServlet extends HttpServlet {
10. protected void doGet(HttpServletRequest request, HttpServletResponse response)
11. throws ServletException, IOException {
12. [Link]("text/html");
13. PrintWriter out=[Link]();
14.
15. [Link]("[Link]").include(request, response);
16.
17. HttpSession session=[Link]();
18. [Link]();
19.
20. [Link]("You are successfully logged out!");
21.
22. [Link]();
23. }
24. }
File: [Link]
1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. public class ProfileServlet extends HttpServlet {
9. protected void doGet(HttpServletRequest request, HttpServletResponse response)
10. throws ServletException, IOException {
11. [Link]("text/html");
12. PrintWriter out=[Link]();
13. [Link]("[Link]").include(request, response);
14.
15. HttpSession session=[Link](false);
16. if(session!=null){
17. String name=(String)[Link]("name");
18.
19. [Link]("Hello, "+name+" Welcome to Profile");
20. }
21. else{
22. [Link]("Please login first");
23. [Link]("[Link]").include(request, response);
24. }
25. [Link]();
26. }
27. }
File: [Link]
34. <url-pattern>/LogoutServlet</url-pattern>
35. </servlet-mapping>
36. </web-app>
Output
Event classes
1. ServletRequestEvent
2. ServletContextEvent
3. ServletRequestAttributeEvent
4. ServletContextAttributeEvent
5. HttpSessionEvent
6. HttpSessionBindingEvent
Event interfaces
1. ServletRequestListener
2. ServletRequestAttributeListener
3. ServletContextListener
4. ServletContextAttributeListener
5. HttpSessionListener
6. HttpSessionAttributeListener
7. HttpSessionBindingListener
8. HttpSessionActivationListener
ServletContextEvent
HttpSessionEvent
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
128 | P a g e Code MicroSystem Arvind Sir 9822939054
ServletRequestEvent
ServletContext AttributeEvent
HttpSessionBindingEvent
Servlet Filter
A filter is an object that is invoked at the preprocessing and postprocessing of a request.
It is mainly used to perform filtering tasks such as conversion, logging, compression, encryption
and decryption, input validation etc.
The servlet filter is pluggable, i.e. its entry is defined in the [Link] file, if we remove the
entry of filter from the [Link] file, filter will be removed automatically and we don't need to
change the servlet.
Note: Unlike Servlet, One filter doesn't have dependency on another filter.
Usage of Filter
Advantage of Filter
1. Filter is pluggable.
2. One filter don't have dependency onto another resource.
3. Less Maintenance
Filter API
Like servlet filter have its own API. The [Link] package contains the three interfaces of
Filter API.
1. Filter
2. FilterChain
3. FilterConfig
1) Filter interface
For creating any filter, you must implement the Filter interface. Filter interface provides the life
cycle methods for a filter.
Method Description
public void doFilter(HttpServletRequest doFilter() method is invoked every time when user
request,HttpServletResponse response, FilterChain request to any resource, to which the filter is
chain) [Link] is used to perform filtering tasks.
2) FilterChain interface
The object of FilterChain is responsible to invoke the next filter or resource in the [Link]
object is passed in the doFilter method of Filter [Link] FilterChain interface contains only
one method:
We can define filter same as servlet. Let's see the elements of filter and filter-mapping.
1. <web-app>
2.
3. <filter>
4. <filter-name>...</filter-name>
5. <filter-class>...</filter-class>
6. </filter>
7.
8. <filter-mapping>
9. <filter-name>...</filter-name>
10. <url-pattern>...</url-pattern>
11. </filter-mapping>
12.
13. </web-app>
For mapping filter we can use, either url-pattern or servlet-name. The url-pattern elements has an
advantage over servlet-name element i.e. it can be applied on servlet, JSP or HTML.
In this example, we are simply displaying information that filter is invoked automatically after
the post processing of the request.
[Link]
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link].*;
5.
6. public class MyFilter implements Filter{
7.
8. public void init(FilterConfig arg0) throws ServletException {}
9.
10. public void doFilter(ServletRequest req, ServletResponse resp,
11. FilterChain chain) throws IOException, ServletException {
12.
13. PrintWriter out=[Link]();
14. [Link]("filter is invoked before");
15.
16. [Link](req, resp);//sends request to next resource
17.
18. [Link]("filter is invoked after");
19. }
20. public void destroy() {}
21. }
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link];
5. import [Link].*;
6.
7. public class HelloServlet extends HttpServlet {
8. public void doGet(HttpServletRequest request, HttpServletResponse response)
9. throws ServletException, IOException {
10.
11. [Link]("text/html");
12. PrintWriter out = [Link]();
13.
14. [Link]("<br>welcome to servlet<br>");
15.
16. }
17.
18. }
[Link]
For defining the filter, filter element of web-app must be defined just like servlet.
1. <web-app>
2.
3. <servlet>
4. <servlet-name>s1</servlet-name>
5. <servlet-class>HelloServlet</servlet-class>
6. </servlet>
7. 9
8. <servlet-mapping>
9. <servlet-name>s1</servlet-name>
10. <url-pattern>/servlet1</url-pattern>
11. </servlet-mapping>
12.
13. <filter>
14. <filter-name>f1</filter-name>
15. <filter-class>MyFilter</filter-class>
16. </filter>
17.
18. <filter-mapping>
19. <filter-name>f1</filter-name>
20. <url-pattern>/servlet1</url-pattern>
21. </filter-mapping>
22.
23.
24. </web-app>
Authentication Filter
We can perform authentication in filter. Here, we are going to check to password given by the
user in filter class, if given password is admin, it will forward the request to the WelcomeAdmin
servlet otherwise it will display error message.
[Link]
[Link]
[Link]
[Link]
[Link]
1. <form action="servlet1">
2. Name:<input type="text" name="name"/><br/>
3. Password:<input type="password" name="password"/><br/>
4.
5. <input type="submit" value="login">
6.
7. </form>
[Link]
1. import [Link];
2. import [Link];
3. import [Link].*;
4.
5. public class MyFilter implements Filter{
6.
7. public void init(FilterConfig arg0) throws ServletException {}
8.
9. public void doFilter(ServletRequest req, ServletResponse resp,
10. FilterChain chain) throws IOException, ServletException {
11.
12. PrintWriter out=[Link]();
13.
14. String password=[Link]("password");
15. if([Link]("admin")){
16. [Link](req, resp);//sends request to next resource
17. }
18. else{
19. [Link]("username or password error!");
20. RequestDispatcher rd=[Link]("[Link]");
21. [Link](req, resp);
22. }
23.
24. }
25. public void destroy() {}
26.
27. }
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link];
5. import [Link].*;
6.
7. public class AdminServlet extends HttpServlet {
8. public void doGet(HttpServletRequest request, HttpServletResponse response)
9. throws ServletException, IOException {
10.
11. [Link]("text/html");
12. PrintWriter out = [Link]();
13.
14. [Link]("welcome ADMIN");
15. [Link]();
16. }
17. }
[Link]
1. <web-app>
2. <servlet>
3. <servlet-name>AdminServlet</servlet-name>
4. <servlet-class>AdminServlet</servlet-class>
5. </servlet>
6.
7. <servlet-mapping>
8. <servlet-name>AdminServlet</servlet-name>
9. <url-pattern>/servlet1</url-pattern>
10. </servlet-mapping>
11.
12. <filter>
13. <filter-name>f1</filter-name>
14. <filter-class>MyFilter</filter-class>
15. </filter>
16. <filter-mapping>
17. <filter-name>f1</filter-name>
18. <url-pattern>/servlet1</url-pattern>
19. </filter-mapping>
20.
21. </web-app>
FilterConfig
An object of FilterConfig is created by the web container. This object can be used to get the
configuration information from the [Link] file.
1. public void init(FilterConfig config): init() method is invoked only once it is used to
initialize the filter.
2. public String getInitParameter(String parameterName): Returns the parameter value
for the specified parameter name.
3. public [Link] getInitParameterNames(): Returns an enumeration
containing all the parameter names.
4. public ServletContext getServletContext(): Returns the ServletContext object.
Example of FilterConfig
In this example, if you change the param-value to no, request will be forwarded to the servlet
otherwise filter will create the response with the message: this page is underprocessing. Let's see
the simple example of FilterConfig. Here, we have created 4 files:
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link].*;
5.
6. public class MyFilter implements Filter{
7. FilterConfig config;
8.
9. public void init(FilterConfig config) throws ServletException {
10. [Link]=config;
11. }
12.
13. public void doFilter(ServletRequest req, ServletResponse resp,
14. FilterChain chain) throws IOException, ServletException {
15.
16. PrintWriter out=[Link]();
17.
18. String s=[Link]("construction");
19.
20. if([Link]("yes")){
21. [Link]("This page is under construction");
22. }
23. else{
24. [Link](req, resp);//sends request to next resource
25. }
26.
27. }
28. public void destroy() {}
29. }
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link];
5. import [Link].*;
6.
7. public class HelloServlet extends HttpServlet {
8. public void doGet(HttpServletRequest request, HttpServletResponse response)
9. throws ServletException, IOException {
10.
11. [Link]("text/html");
12. PrintWriter out = [Link]();
13.
14. [Link]("<br>welcome to servlet<br>");
15.
16. }
17.
18. }
[Link]
1. <web-app>
2.
3. <servlet>
4. <servlet-name>HelloServlet</servlet-name>
5. <servlet-class>HelloServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>HelloServlet</servlet-name>
10. <url-pattern>/servlet1</url-pattern>
11. </servlet-mapping>
12.
13. <filter>
14. <filter-name>f1</filter-name>
15. <filter-class>MyFilter</filter-class>
16. <init-param>
17. <param-name>construction</param-name>
18. <param-value>no</param-value>
19. </init-param>
20. </filter>
21. <filter-mapping>
22. <filter-name>f1</filter-name>
23. <url-pattern>/servlet1</url-pattern>
24. </filter-mapping>
25.
26.
27. </web-app>
[Link]
1. import [Link].*;
2. import [Link].*;
3.
4. public class MyFilter implements Filter{
5. public void init(FilterConfig arg0) throws ServletException {}
6.
7. public void doFilter(ServletRequest req, ServletResponse res,
8. FilterChain chain) throws IOException, ServletException {
9.
10. PrintWriter out=[Link]();
11.
12. [Link]("<br/>this site is underconstruction..");
13. [Link]();
14.
15. }
16. public void destroy() {}
17. }
[Link]
1. import [Link].*;
2. import [Link].*;
3.
4. public class MyFilter implements Filter{
5. static int count=0;
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
139 | P a g e Code MicroSystem Arvind Sir 9822939054
[Link]
1. import [Link].*;
2. import [Link].*;
3.
4. public class MyFilter implements Filter{
5. static int count=0;
6. public void init(FilterConfig arg0) throws ServletException {}
7.
8. public void doFilter(ServletRequest req, ServletResponse res,
9. FilterChain chain) throws IOException, ServletException {
10.
11. PrintWriter out=[Link]();
12. long before=[Link]();
13.
14. [Link](request,response);
15.
16. long after=[Link]();
17. [Link]("<br/>Total response time "+(after-before)+" miliseconds");
18. [Link]();
19.
20. }
21. public void destroy() {}
22. }
ServletInputStream class
ServletInputStream class provides stream to read binary data such as image etc. from the
request object. It is an abstract class.
1. ServletInputStream sin=[Link]();
1. int readLine(byte[] b, int off, int len) it reads the input stream.
ServletOutputStream class
ServletOutputStream class provides a stream to write binary data into the response. It is an
abstract class.
1. ServletOutputStream out=[Link]();
The ServletOutputStream class provides print() and println() methods that are overloaded.
In this example, we are assuming that you have [Link] image inside the c:\test directory. You
may change the location accordingly.
1. [Link]
2. [Link]
3. [Link]
[Link]
This file creates a link that invokes the servlet. The url-pattern of the servlet is servlet1.
[Link]
This servlet class reads the image from the mentioned directory and writes the content in the
response object using ServletOutputStream and BufferedOutputStream classes.
1. package [Link];
2. import [Link].*;
3. import [Link].*;
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
142 | P a g e Code MicroSystem Arvind Sir 9822939054
4. import [Link].*;
5. public class DisplayImage extends HttpServlet {
6.
7. public void doGet(HttpServletRequest request,HttpServletResponse response)
8. throws IOException
9. {
10. [Link]("image/jpeg");
11. ServletOutputStream out;
12. out = [Link]();
13. FileInputStream fin = new FileInputStream("c:\\test\\[Link]");
14.
15. BufferedInputStream bin = new BufferedInputStream(fin);
16. BufferedOutputStream bout = new BufferedOutputStream(out);
17. int ch =0; ;
18. while((ch=[Link]())!=-1)
19. {
20. [Link](ch);
21. }
22.
23. [Link]();
24. [Link]();
25. [Link]();
26. [Link]();
27. }
28. }
Annotation represents the metadata. If you use annotation, deployment descriptor ([Link] file)
is not required. But you should have tomcat7 as it will not run in the previous versions of tomcat.
@WebServlet annotation is used to map the servlet with the specified name.
[Link]
1. import [Link];
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
143 | P a g e Code MicroSystem Arvind Sir 9822939054
2. import [Link];
3.
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9.
10. @WebServlet("/Simple")
11. public class Simple extends HttpServlet {
12. private static final long serialVersionUID = 1L;
13.
14. protected void doGet(HttpServletRequest request, HttpServletResponse response)
15. throws ServletException, IOException {
16.
17.
18. [Link]("text/html");
19. PrintWriter out=[Link]();
20.
21. [Link]("<html><body>");
22. [Link]("<h3>Hello Servlet</h3>");
23. [Link]("</body></html>");
24. }
25. }
SingleThreadModel interface
1. SingleThreadModel interface
2. Example of SingleThreadModel interface
The servlet programmer should implement SingleThreadModel interface to ensure that servlet
can handle only one request at a time. It is a marker interface, means have no methods.
This interface is currently deprecated since Servlet API 2.4 because it doesn't solves all the
thread-safety issues such as static variable and session attributes can be accessed by multiple
threads at the same time even if we have implemented the SingleThreadModel interface. So it is
recommended to use other means to resolve these thread safety issues such as synchronized
block etc.
1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8.
9.
10. public class MyServlet extends HttpServlet implements SingleThreadModel{
11.
12. public void doGet(HttpServletRequest request, HttpServletResponse response)
13. throws ServletException, IOException {
14.
15. [Link]("text/html");
16. PrintWriter out = [Link]();
17.
18. [Link]("welcome");
19. try{[Link](10000);}catch(Exception e){[Link]();}
20. [Link](" to servlet");
21.
22.
23. [Link]();
24. }
25.
26. }
To create the registration page in servlet, we can separate the database logic from the servlet. But
here, we are mixing the database logic in the servlet only for simplicity of the program. We will
develop this page in JSP following DAO, DTO and Singleton design pattern later.
[Link]
[Link]
[Link]
[Link]
In this page, we have getting input from the user using text fields and combobox. The
information entered by the user is forwarded to Register servlet, which is responsible to store the
data into the database.
1. <html>
2. <body>
3. <form action="servlet/Register" method="post">
4.
5. Name:<input type="text" name="userName"/><br/><br/>
6. Password:<input type="password" name="userPass"/><br/><br/>
7. Email Id:<input type="text" name="userEmail"/><br/><br/>
8. Country:
9. <select name="userCountry">
10. <option>India</option>
11. <option>Pakistan</option>
12. <option>other</option>
13. </select>
14.
15. <br/><br/>
16. <input type="submit" value="register"/>
17.
18. </form>
19. </body>
20. </html>
[Link]
This servlet class receives all the data entered by user and stores it into the database. Here, we
are performing the database logic. But you may separate it, which will be better for the web
application.
1. import [Link].*;
2. import [Link].*;
3. import [Link];
4. import [Link].*;
5.
6. public class Register extends HttpServlet {
7. public void doPost(HttpServletRequest request, HttpServletResponse response)
8. throws ServletException, IOException {
9.
10. [Link]("text/html");
11. PrintWriter out = [Link]();
12.
13. String n=[Link]("userName");
14. String p=[Link]("userPass");
15. String e=[Link]("userEmail");
16. String c=[Link]("userCountry");
17.
18. try{
19. [Link]("[Link]");
20. Connection con=[Link](
21. "jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
22.
23. PreparedStatement ps=[Link](
24. "insert into registeruser values(?,?,?,?)");
25.
26. [Link](1,n);
27. [Link](2,p);
28. [Link](3,e);
29. [Link](4,c);
30.
31. int i=[Link]();
32. if(i>0)
33. [Link]("You are successfully registered...");
34.
35.
36. }catch (Exception e2) {[Link](e2);}
37.
38. [Link]();
39. }
40.
41. }
[Link] file
1. <web-app>
2.
3. <servlet>
4. <servlet-name>Register</servlet-name>
5. <servlet-class>Register</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>Register</servlet-name>
10. <url-pattern>/servlet/Register</url-pattern>
11. </servlet-mapping>
12.
13. <welcome-file-list>
14. <welcome-file>[Link]</welcome-file>
15. </welcome-file-list>
16.
17. </web-app>
We are assuming there are many records in this table. In this example, we are getting the data
from the database in servlet and printing it. We are doing all the database logic in servlet for
simplicity of the program. But it will be better to separate it from the servlet file.
[Link]
[Link]
[Link]
[Link]
This page gets rollno from the user and forwards this data to servlet which is responsible to show
the records based on the given rollno.
1. <html>
2. <body>
3. <form action="servlet/Search">
4. Enter your Rollno:<input type="text" name="roll"/><br/>
5.
6. <input type="submit" value="search"/>
7. </form>
8. </body>
9. </html>
[Link]
This is the servlet file which gets the input from the user and maps this data with the database
and prints the record for the matched data. In this page, we are displaying the column name of
the database along with data, so we are using ResultSetMetaData interface.
1. import [Link].*;
2. import [Link].*;
3. import [Link];
4. import [Link].*;
5.
6. public class Search extends HttpServlet {
7.
8. public void doGet(HttpServletRequest request, HttpServletResponse response)
54. finally{[Link]();}
55.
56. }
57. }
[Link] file
This is the configuration file which provides information of the servlet to the container.
1. <web-app>
2.
3. <servlet>
4. <servlet-name>Search</servlet-name>
5. <servlet-class>Search</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>Search</servlet-name>
10. <url-pattern>/servlet/Search</url-pattern>
11. </servlet-mapping>
12.
13. </web-app>
To run this application, you need to create following table with some records.
6. "USERCOUNTRY" VARCHAR2(4000),
7. "CONTACT" NUMBER,
8. CONSTRAINT "CSUSER_PK" PRIMARY KEY ("USERID") ENABLE
9. )
10. /
1. [Link]
2. [Link]
3. [Link]
4. [Link]
5. [Link]
6. [Link]
1) [Link]
This html file contains two links that sends request to the servlet.
2) [Link]
This is simple bean class containing 3 properties with its getters and setters. This class represents
the table of the database.
16. }
17. public String getPassword() {
18. return password;
19. }
20. public void setPassword(String password) {
21. [Link] = password;
22. }
23.
24.
25. }
3) [Link]
It is the listener class. When the project will be deployed, contextInitialized method of
ServletContextListener is invoked by default. Here, we are getting the records of the table and
storing it in the User class object which is added in the ArrayList class object. At last, all the
records of the table will be stored in the ArrayList class object (collection). Finally, we are
storing the ArrayList object in the ServletConext object as an attribute so that we can get it in the
servlet and use it.
1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link].*;
5. import [Link];
6.
7. public class MyListener implements ServletContextListener{
8.
9. public void contextInitialized(ServletContextEvent e) {
10.
11. ArrayList list=new ArrayList();
12. try{
13. [Link]("[Link]");
14. Connection con=[Link](
15. "jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
16.
17. PreparedStatement ps=[Link]("select * from csuser");
18. ResultSet rs=[Link]();
19. while([Link]()){
20. User u=new User();
21. [Link]([Link](1));
22. [Link]([Link](2));
23. [Link]([Link](3));
24. [Link](u);
25. }
26. [Link]();
27.
28. }catch(Exception ex){[Link](ex);}
29.
30. //storing the ArrayList object in ServletContext
31. ServletContext context=[Link]();
32. [Link]("data",list);
33.
34. }
35. public void contextDestroyed(ServletContextEvent arg0) {
36. [Link]("project undeployed...");
37. }
38.
39. }
4) [Link]
This servlet gets the information from the servlet context object and prints it.
1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9.
10. import [Link];
11. import [Link];
12. import [Link];
13. import [Link];
14. import [Link];
15.
16.
17. public class MyServlet1 extends HttpServlet {
18. public void doGet(HttpServletRequest request, HttpServletResponse
19. response)throws ServletException, IOException {
20.
21. [Link]("text/html");
22. PrintWriter out = [Link]();
23.
24. long before=[Link]();
25.
26. ServletContext context=getServletContext();
5) [Link]
It is same as MyServlet1. This servlet gets the information from the servlet context object and
prints it.
1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9.
10. import [Link];
11. import [Link];
12. import [Link];
13. import [Link];
14. import [Link];
15.
16.
17. public class MyServlet2 extends HttpServlet {
18. public void doGet(HttpServletRequest request, HttpServletResponse
19. response)throws ServletException, IOException {
20.
21. [Link]("text/html");
22. PrintWriter out = [Link]();
23.
24. long before=[Link]();
25.
26. ServletContext context=getServletContext();
27. List list=(List)[Link]("data");
28.
29. Iterator itr=[Link]();
30. while([Link]()){
31. User u=(User)[Link]();
32. [Link]("<br>"+[Link]()+" "+[Link]()+" "+[Link]());
33. }
34.
35. long after=[Link]();
36. [Link]("<br>total time :"+(after-before));
37.
38. [Link]();
39. }
40.
41. }
6) [Link]
24. <servlet-name>MyServlet1</servlet-name>
25. <url-pattern>/servlet1</url-pattern>
26. </servlet-mapping>
27. <servlet-mapping>
28. <servlet-name>MyServlet2</servlet-name>
29. <url-pattern>/servlet2</url-pattern>
30. </servlet-mapping>
31.
32. </web-app>
[Link]
1. <html>
2. <body>
3. <form action="go" method="post" enctype="multipart/form-data">
4. Select File:<input type="file" name="fname"/><br/>
5. <input type="submit" value="upload"/>
6. </form>
7. </body>
8. </html>
Now, for uploading a file to the server, there can be various ways. But, I am going to use
MultipartRequest class provided by oreilly. For using this class you must have [Link] file. If you
will download this example, we will the [Link] file alongwith code.
[Link]
1. import [Link].*;
2. import [Link];
3. import [Link].*;
4. import [Link];
5.
6. public class UploadServlet extends HttpServlet {
7.
8. public void doPost(HttpServletRequest request, HttpServletResponse response)
9. throws ServletException, IOException {
10.
11. [Link]("text/html");
12. PrintWriter out = [Link]();
13.
14. MultipartRequest m=new MultipartRequest(request,"d:/new");
15. [Link]("successfully uploaded");
16. }
17. }
There are two arguments passed in MultipartRequest class constructor, first one is
HttpServletRequest object and second one is String object (for location). Here I am supposing
that you have new folder in D driver.
[Link] file
1. <web-app>
2.
3. <servlet>
4. <servlet-name>UploadServlet</servlet-name>
5. <servlet-class>UploadServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>UploadServlet</servlet-name>
10. <url-pattern>/go</url-pattern>
11. </servlet-mapping>
12.
13. </web-app>
[Link]
[Link]
[Link]
[Link]
[Link]
This is the servlet file that reads the content of the file and writes it into the stream to send as a
response. For this purpose, we need to inform the server, so we are setting the content type as
APPLICATION/OCTET-STREAM .
1. import [Link].*;
2. import [Link];
3. import [Link].*;
4.
5. public class DownloadServlet extends HttpServlet {
6.
7. public void doGet(HttpServletRequest request, HttpServletResponse response)
8. throws ServletException, IOException {
9.
10. [Link]("text/html");
11. PrintWriter out = [Link]();
12. String filename = "[Link]";
13. String filepath = "e:\\";
14. [Link]("APPLICATION/OCTET-STREAM");
15. [Link]("Content-
Disposition","attachment; filename=\"" + filename + "\"");
16.
17. FileInputStream fileInputStream = new FileInputStream(filepath + filename);
18.
19. int i;
20. while ((i=[Link]()) != -1) {
21. [Link](i);
22. }
23. [Link]();
24. [Link]();
25. }
26.
27. }
[Link] file
This configuration file provides informations to the server about the servlet.
1. <web-app>
2.
3. <servlet>
4. <servlet-name>DownloadServlet</servlet-name>
5. <servlet-class>DownloadServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>DownloadServlet</servlet-name>
10. <url-pattern>/servlet/DownloadServlet</url-pattern>
11. </servlet-mapping>
12.
13. </web-app>
The JavaMail API provides many classes that can be used to send email from java. The
[Link] and [Link] packages contains all the classes required for sending and
receiving emails.
For better understanding of this example click steps for sending email from javamail api
For sending the email using JavaMail API, you need to load the two jar files:
[Link]
[Link]
download these jar files or go to the Oracle site to download the latest version.
Here is the simple example of sending email from servlet. For this example we are creating 3
files:
[Link]
1. <form action="servlet/SendMail">
2. To:<input type="text" name="to"/><br/>
3. Subject:<input type="text" name="subject"><br/>
4. Text:<textarea rows="10" cols="70" name="msg"></textarea><br/>
5. <input type="submit" value="send"/>
6. </form>
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8.
9.
10. public class SendMail extends HttpServlet {
11. public void doGet(HttpServletRequest request,
12. HttpServletResponse response)
13. throws ServletException, IOException {
14.
15. [Link]("text/html");
16. PrintWriter out = [Link]();
17.
18. String to=[Link]("to");
19. String subject=[Link]("subject");
20. String msg=[Link]("msg");
21.
22. [Link](to, subject, msg);
23. [Link]("message has been sent successfully");
24. [Link]();
25. }
26.
27. }
[Link]
1. import [Link];
2.
3. import [Link].*;
4. import [Link];
5. import [Link];
6.
7. public class Mailer {
8. public static void send(String to,String subject,String msg){
9.
10. final String user="microsystem@[Link]";//change accordingly
11. final String pass="xxxxx";
12.
13. //1st step) Get the session object
14. Properties props = new Properties();
15. [Link]("[Link]", "[Link]");//change accordingly
16. [Link]("[Link]", "true");
17.
18. Session session = [Link](props,
19. new [Link]() {
20. protected PasswordAuthentication getPasswordAuthentication() {
21. return new PasswordAuthentication(user,pass);
22. }
23. });
24. //2nd step)compose message
25. try {
26. MimeMessage message = new MimeMessage(session);
27. [Link](new InternetAddress(user));
28. [Link]([Link],new InternetAddress(to));
29. [Link](subject);
30. [Link](msg);
31.
32. //3rd step)send message
33. [Link](message);
34.
35. [Link]("Done");
36.
37. } catch (MessagingException e) {
38. throw new RuntimeException(e);
39. }
40.
41. }
42. }
To create such application, you need to have the [Link] file. If you download this example, you
will get the example with jar file.
Let's see the simple example of writing data into PDF using servlet. In this example, we have
mentioned the content type application/pdf that must be specified to display data in the PDF
format.
[Link]
1. package [Link];
2. import [Link].*;
3. import [Link].*;
4. import [Link].*;
5. import [Link].*;
Project Training on Java,DotNet,Php,Andorid Contact:9822939054
Email:codemicrosystem@[Link]
163 | P a g e Code MicroSystem Arvind Sir 9822939054
6. import [Link];
7. import [Link];
8. import [Link];
9. import [Link];
10.
11. public class ServletPDF extends HttpServlet {
12.
13. public void doGet(HttpServletRequest request,
14. HttpServletResponse response) throws IOException {
15.
16. PrintWriter out = [Link]();
17. [Link]("application/pdf");
18.
19. [Link]("Content-disposition","inline; filename='[Link]'");
20.
21. PDF p = new PDF(out);
22. Page p1 = new Page(p);
23. [Link](new MoveTo(p, 200, 700));
24. [Link](new Text(p, "[Link]"));
25. [Link](new Text(p, "by Arvind"));
26.
27. [Link](p1);
28. [Link]("Code MicroSystem");
29.
30. [Link]();
31.
32. }
33. }
[Link]
[Link]
[Link]
[Link]
[Link]
You must need to create a table userreg with name and pass fields. Moreover, it must have
contained some data. The table should be as:
[Link]
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. import [Link];
9.
10.
11. public class FirstServlet extends HttpServlet {
12. public void doPost(HttpServletRequest request, HttpServletResponse response)
13. throws ServletException, IOException {
14.
15. [Link]("text/html");
16. PrintWriter out = [Link]();
17.
18. String n=[Link]("username");
19. String p=[Link]("userpass");
20.
21. if([Link](n, p)){
22. RequestDispatcher rd=[Link]("servlet2");
23. [Link](request,response);
24. }
25. else{
26. [Link]("Sorry username or password error");
27. RequestDispatcher rd=[Link]("[Link]");
28. [Link](request,response);
29. }
30.
31. [Link]();
32. }
33. }
[Link]
1. import [Link].*;
2.
3. public class LoginDao {
4. public static boolean validate(String name,String pass){
5. boolean status=false;
6. try{
7. [Link]("[Link]");
8. Connection con=[Link](
9. "jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
10.
11. PreparedStatement ps=[Link](
12. "select * from userreg where name=? and pass=?");
13. [Link](1,name);
14. [Link](2,pass);
15.
16. ResultSet rs=[Link]();
17. status=[Link]();
18.
19. }catch(Exception e){[Link](e);}
20. return status;
21. }
22. }
[Link]
1. import [Link];
2. import [Link];
3.
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8.
9. public class WelcomeServlet extends HttpServlet {
10. public void doPost(HttpServletRequest request, HttpServletResponse response)
11. throws ServletException, IOException {
12.
13. [Link]("text/html");
14. PrintWriter out = [Link]();
15.
16. String n=[Link]("username");
In this example, we are assuming that you have [Link] image inside the c:\test directory. You
may change the location accordingly.
1. [Link]
2. [Link]
3. [Link]
[Link]
This file creates a link that invokes the servlet. The url-pattern of the servlet is servlet1.
[Link]
This servlet class reads the image from the mentioned directory and writes the content in the
response object using ServletOutputStream and BufferedOutputStream classes.
1. package [Link];
2. import [Link].*;
3. import [Link].*;
4. import [Link].*;
5. public class DisplayImage extends HttpServlet {
6.
7. public void doGet(HttpServletRequest request,HttpServletResponse response)
8. throws IOException
9. {
10. [Link]("image/jpeg");
11. ServletOutputStream out;
12. out = [Link]();
13. FileInputStream fin = new FileInputStream("c:\\test\\[Link]");
14.
15. BufferedInputStream bin = new BufferedInputStream(fin);
16. BufferedOutputStream bout = new BufferedOutputStream(out);
17. int ch =0; ;
18. while((ch=[Link]())!=-1)
19. {
20. [Link](ch);
21. }
22.
23. [Link]();
24. [Link]();
25. [Link]();
26. [Link]();
27. }
28. }