Servlet Tutorial
Servlet technology
is used to create web application (resides at server side and generates dynamic
web page).
Servlet technology
is robust and scalable because of java language. Before Servlet, CGI (Common
Gateway Interface) scripting language was popular as a server-side programming
language. But there was 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.
- 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.
Do You Know?
- 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 ?
What is web application?
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(Commmon Gateway Interface)
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
There are many problems in CGI technology:
- If
number of clients increases, it takes more time for sending response.
- For
each request, it starts a process and Web server is limited to start
processes.
- It
uses platform dependent language e.g. C, C++, perl.
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, lightweight, cost of communication between the threads are
low. The basic benefits of servlet are as follows:
- better
performance: because
it creates a thread for each request not process.
- Portability: because it
uses java language.
- Robust: Servlets
are managed by JVM so no need to worry about momory leak, garbage
collection etc.
- Secure: because it
uses java language..
Servlet Terminology
- Basics of Servlet
- HTTP
- Http Request Methods
- Difference between Get and Post
- Anatomy of Get Request
- Anatomy of Post Request
- Content Type
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.
The basic terminology used in servlet are
given below:
- HTTP
- HTTP
Request Types
- Difference
between Get and Post method
- Container
- Server
and Difference between web server and application server
- Content
Type
- Introduction
of XML
- Deployment
HTTP (Hyper Text Transfer Protocol)
- Http
is the protocol that allows web servers and browsers to exchange data over
the web.
- It
is a request response protocol.
- Http
uses reliable TCP connections bydefault on TCP port 80.
- It
is stateless means each request is considered as the new request. In other
words, server doesn't recognize the user bydefault.
Http Request Methods
Every request has a header that tells the status
of the client. There are many request methods. Get and Post requests are mostly
used.
The http request methods are:
- GET
- POST
- HEAD
- PUT
- DELETE
- OPTIONS
- TRACE
HTTP Request
|
Description
|
GET
|
Asks to
get the resource at the requested URL.
|
POST
|
Asks the
server to accept the body info attached. It is like GET request with extra
info sent with the request.
|
HEAD
|
Asks
for only the header part of whatever a GET would return. Just like GET but
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.
|
OPTIONS
|
Asks
for a list of the HTTP methods to which the thing at the request URL can respond
|
What is the difference between Get and Post?
There are many differences between the Get and
Post request. Let's see these differences:
GET
|
POST
|
1) In
case of Get request, only limited amount of data can be sent
because data is sent in header.
|
In case
of post request, large amount of data can be sent because
data is sent in body.
|
2) Get
request is not secured because data is exposed in URL bar.
|
Post
request is secured because data is not 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 is delivered.
|
Post
request is non-idempotent
|
5) Get
request is more efficient and used more than Post
|
Post
request is less efficient and used less than get.
|
Anatomy of Get Request
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.
Anatomy of Post Request
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
It provides runtime environment for JavaEE
(j2ee) applications.
It performs many operations that are given
below:
- Life
Cycle Management
- Multithreaded
support
- Object
Pooling
- Security
etc.
Server
It is a running program or software that
provides services.
There are two types of servers:
- Web
Server
- 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.
Example of Web Servers are: Apache
Tomcat and Resin.
Application Server
Application server contains Web and EJB
containers. It can be used for servlet, jsp, struts, jsf, ejb etc.
Example of Application Servers are:
- JBoss Open-source
server from JBoss community.
- Glassfish provided
by Sun Microsystem. Now acquired by Oracle.
- Weblogic provided
by Oracle. It more secured.
- Websphere provided
by IBM.
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.
There are many content types:
- text/html
- text/plain
- application/msword
- application/vnd.ms-excel
- application/jar
- application/pdf
- application/octet-stream
- application/x-zip
- images/jpeg
- video/quicktime
etc.
Servlet API
- Servlet API
- Interfaces in javax.servlet package
- Classes in javax.servlet package
- Interfaces in javax.servlet.http package
- Classes in javax.servlet.http package
The javax.servlet and javax.servlet.http
packages represent interfaces and classes for servlet api.
The javax.servlet package
contains many interfaces and classes that are used by the servlet or web
container. These are not specific to any protocol.
The javax.servlet.http package
contains interfaces and classes that are responsible for http requests only.
Let's see what are the interfaces of
javax.servlet package.
Interfaces in javax.servlet package
There are many interfaces in javax.servlet
package. They are as follows:
- Servlet
- ServletRequest
- ServletResponse
- RequestDispatcher
- ServletConfig
- ServletContext
- SingleThreadModel
- Filter
- FilterConfig
- FilterChain
- ServletRequestListener
- ServletRequestAttributeListener
- ServletContextListener
- ServletContextAttributeListener
Classes in javax.servlet package
There are many classes in javax.servlet package.
They are as follows:
- GenericServlet
- ServletInputStream
- ServletOutputStream
- ServletRequestWrapper
- ServletResponseWrapper
- ServletRequestEvent
- ServletContextEvent
- ServletRequestAttributeEvent
- ServletContextAttributeEvent
- ServletException
- UnavailableException
Interfaces in javax.servlet.http package
There are many interfaces in javax.servlet.http
package. They are as follows:
- HttpServletRequest
- HttpServletResponse
- HttpSession
- HttpSessionListener
- HttpSessionAttributeListener
- HttpSessionBindingListener
- HttpSessionActivationListener
- HttpSessionContext
(deprecated now)
Classes in javax.servlet.http package
There are many classes in javax.servlet.http
package. They are as follows:
- HttpServlet
- Cookie
- HttpServletRequestWrapper
- HttpServletResponseWrapper
- HttpSessionEvent
- HttpSessionBindingEvent
- HttpUtils
(deprecated now)
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.
Methods of Servlet interface
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
|
public
void init(ServletConfig config)
|
initializes
the servlet. It is the life cycle method of servlet and invoked by the web
container only once.
|
public
void service(ServletRequest request,ServletResponse response)
|
provides
response for the incoming request. It is invoked at each request by the web
container.
|
public
void destroy()
|
is
invoked only once and indicates that servlet is being destroyed.
|
public
ServletConfig getServletConfig()
|
returns
the object of ServletConfig.
|
public
String getServletInfo()
|
returns
information about servlet such as writer, copyright, version etc.
|
Servlet Example by implementing Servlet
interface
Let's see the simple example of servlet by
implementing the servlet interface.
It will be better if you learn it after visiting
steps to create a servlet.
File: First.java
1.
import java.io.*;
2.
import javax.servlet.*;
3.
4.
public class First implements Servlet{
5.
ServletConfig config=null;
6.
7.
public void init(ServletConfig config){
8.
this.config=config;
9.
System.out.println("servlet is initialized");
10. }
11.
12. public void service(ServletRequest req,ServletResponse res)
13. throws IOException,ServletException{
14.
15. res.setContentType("text/html");
16.
17. PrintWriter out=res.getWriter();
18. out.print("<html><body>");
19. out.print("<b>hello simple servlet</b>");
20. out.print("</body></html>");
21.
22. }
23. public void destroy(){System.out.println("servlet is destroyed");}
24. public ServletConfig getServletConfig(){return config;}
25. public String getServletInfo(){return "copyright 2007-1010";}
26.
27. }
GenericServlet class
GenericServlet class
implements Servlet, ServletConfig and Serializable interfaces.
It provides the implementaion of all the methods of these interfaces except the
service method.
GenericServlet class can handle any type of
request so it is protocol-independent.
You may create a generic servlet by inheriting
the GenericServlet class and providing the implementation of the service
method.
Methods of GenericServlet class
There are many methods in GenericServlet class.
They are as follows:
- public
void init(ServletConfig config) is used to initialize the
servlet.
- public
abstract void service(ServletRequest request, ServletResponse response) provides
service for the incoming request. It is invoked at each time when user
requests for a servlet.
- public
void destroy() is
invoked only once throughout the life cycle and indicates that servlet is
being destroyed.
- public
ServletConfig getServletConfig() returns the object of
ServletConfig.
- public
String getServletInfo() returns information about
servlet such as writer, copyright, version etc.
- public
void init() it
is a convenient method for the servlet programmers, now there is no need
to call super.init(config)
- public
ServletContext getServletContext() returns the object of
ServletContext.
- public
String getInitParameter(String name) returns the parameter value
for the given parameter name.
- public
Enumeration getInitParameterNames() returns all the parameters
defined in the web.xml file.
- public
String getServletName() returns the name of the
servlet object.
- public
void log(String msg) writes the given message in the servlet log file.
- public
void log(String msg,Throwable t) writes the explanatory
message in the servlet log file and a stack trace.
Servlet Example by inheriting the GenericServlet
class
Let's see the simple example of servlet by
inheriting the GenericServlet class.
It will be better if you learn it after visiting
steps to create a servlet.
File: First.java
1.
import java.io.*;
2.
import javax.servlet.*;
3.
4.
public class First extends GenericServlet{
5.
public void service(ServletRequest req,ServletResponse res)
6.
throws IOException,ServletException{
7.
8.
res.setContentType("text/html");
9.
10. PrintWriter out=res.getWriter();
11. out.print("<html><body>");
12. out.print("<b>hello generic servlet</b>");
13. out.print("</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.
|
Methods of HttpServlet class
There are many methods in HttpServlet class.
They are as follows:
- public
void service(ServletRequest req,ServletResponse res) dispatches
the request to the protected service method by converting the request and
response object into http type.
- protected
void service(HttpServletRequest req, HttpServletResponse res) receives
the request from the service method, and dispatches the request to the
doXXX() method depending on the incoming http request type.
- protected
void doGet(HttpServletRequest req, HttpServletResponse res) handles
the GET request. It is invoked by the web container.
- protected
void doPost(HttpServletRequest req, HttpServletResponse res) handles
the POST request. It is invoked by the web container.
- protected
void doHead(HttpServletRequest req, HttpServletResponse res) handles
the HEAD request. It is invoked by the web container.
- protected
void doOptions(HttpServletRequest req, HttpServletResponse res) handles
the OPTIONS request. It is invoked by the web container.
- protected
void doPut(HttpServletRequest req, HttpServletResponse res) handles
the PUT request. It is invoked by the web container.
- protected
void doTrace(HttpServletRequest req, HttpServletResponse res) handles
the TRACE request. It is invoked by the web container.
- protected
void doDelete(HttpServletRequest req, HttpServletResponse res) handles
the DELETE request. It is invoked by the web container.
- protected
long getLastModified(HttpServletRequest req) returns
the time when HttpServletRequest was last modified since midnight January
1, 1970 GMT.
Life Cycle of a
Servlet (Servlet Life Cycle)
The web container maintains the life cycle of a
servlet instance. Let's see the life cycle of the servlet:
- Servlet
class is loaded.
- Servlet
instance is created.
- init
method is invoked.
- service
method is invoked.
- destroy
method is invoked.
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.
1) Servlet class is loaded
The classloader is responsible to load the
servlet class. The servlet class is loaded when the first request for the
servlet is received by the web container.
2) Servlet instance is created
The web container creates the instance of a
servlet after loading the servlet class. The servlet instance is created only
once in the servlet life cycle.
3) init method is invoked
The web
container calls the init method only once after creating the servlet instance.
The init method is used to initialize the servlet. It is the life cycle
method of the javax.servlet.Servlet interface. Syntax of the init method is
given below:
|
1. public void init(ServletConfig config) throws ServletException
4) service method is invoked
The web container calls the service method each
time when request for the servlet is received. If servlet is not initialized,
it follows the first three steps as described above then calls the service
method. If servlet is initialized, it calls the service method. Notice that
servlet is initialized only once. The syntax of the service method of the
Servlet interface is given below:
1.
public void service(ServletRequest request, ServletResponse response)
2. throws ServletException, IOException
5) destroy method is invoked
The web container calls the destroy method
before removing the servlet instance from the service. It gives the servlet an
opportunity to clean up any resource for example memory, thread etc. The syntax
of the destroy method of the Servlet interface is given below:
1. public void destroy()
Steps to create a servlet example
There are given 6 steps to create
a servlet example. These
steps are required for all the servers.
The servlet example can be
created by three ways:
- By
implementing Servlet interface,
- By
inheriting GenericServlet class, (or)
- By
inheriting HttpServlet class
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:
- Create
a directory structure
- Create
a Servlet
- Compile
the Servlet
- Create
a deployment descriptor
- Start
the server and deploy the project
- Access
the servlet
download
this example of servlet
download example of servlet by extending GenericServlet
download example of servlet by implementing Servlet interface
download example of servlet by extending GenericServlet
download example of servlet by implementing Servlet interface
1)Create a directory structures
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 web.xml file must be under the
WEB-INF folder.
2)Create a Servlet
There
are three ways to create the servlet.
1.
By implementing the Servlet interface
2.
By inheriting the GenericServlet class
3.
By inheriting the HttpServlet class
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.
|
DemoServlet.java
1.
import javax.servlet.http.*;
2.
import javax.servlet.*;
3.
import java.io.*;
4.
public class DemoServlet extends HttpServlet{
5.
public void doGet(HttpServletRequest req,HttpServletResponse res)
6.
throws ServletException,IOException
7.
{
8.
res.setContentType("text/html");//setting the content type
9.
PrintWriter pw=res.getWriter();//get the stream to write the data
10.
11. //writing html in the stream
12. pw.println("<html><body>");
13. pw.println("Welcome to servlet");
14. pw.println("</body></html>");
15.
16. pw.close();//closing the stream
17. }}
3)Compile the servlet
For compiling the Servlet, jar
file is required to be loaded. Different Servers provide different jar files:
Jar file
|
Server
|
1)
servlet-api.jar
|
Apache
Tomcat
|
2)
weblogic.jar
|
Weblogic
|
3) javaee.jar
|
Glassfish
|
4)
javaee.jar
|
JBoss
|
Two ways to load the jar file
- set
classpath
- 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.
4)Create the deployment descriptor (web.xml file)
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 web.xml file. There are many xml parsers such
as SAX, DOM and Pull.
There are many elements in the
web.xml file. Here is given some necessary elements to run the simple servlet
program.
web.xml file
1.
<web-app>
2.
3.
<servlet>
4.
<servlet-name>sonoojaiswal</servlet-name>
5.
<servlet-class>DemoServlet</servlet-class>
6.
</servlet>
7.
8.
<servlet-mapping>
9.
<servlet-name>sonoojaiswal</servlet-name>
10. <url-pattern>/welcome</url-pattern>
11. </servlet-mapping>
12.
13. </web-app>
Description
of the elements of web.xml file
There are too many elements in
the web.xml file. Here is the illustration of some elements that is used in the
above web.xml file. The elements are as follows:
<web-app> represents the whole application.
|
<servlet> is sub element of <web-app> and
represents the servlet.
|
<servlet-name> is sub element of <servlet>
represents the name of the servlet.
|
<servlet-class> is sub element of <servlet>
represents the class of the servlet.
|
<servlet-mapping> is sub element of <web-app>. It is
used to map the servlet.
|
<url-pattern> is sub element of <servlet-mapping>.
This pattern is used at client side to invoke the servlet.
|
5)Start the Server and deploy the project
To start Apache Tomcat server,
double click on the startup.bat file under apache-tomcat/bin directory.
One Time Configuration for Apache Tomcat Server
You need to perform 2 tasks:
- set
JAVA_HOME or JRE_HOME in environment variable (It is required to start
server).
- Change
the port number of tomcat (optional). It is required if another server is
running on same port (8080).
1) How to set JAVA_HOME in
environment variable?
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:
Click on advanced system settings
tab then environment variables:
Click on the new tab of user
variable or system variable:
Write JAVA_HOME in variable name
and paste the path of jdk folder in variable value:
There must not be semicolon (;)
at the end of the path.
After
setting the JAVA_HOME double click on the startup.bat file in apache
tomcat/bin.
|
Note:
There are two types of tomcat available:
1.
Apache tomcat that needs to extract only
(no need to install)
2.
Apache tomcat that needs to install
|
It is
the example of apache tomcat that needs to extract only.
|
Now server is started
successfully.
2) How to change port number of apache tomcat
Changing the port number is
required if there is another server running on the same system with same port
number.Suppose you have installed oracle, you need to change the port number of
apache tomcat because both have the default port number 8080.
Open server.xml 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.
5) How to deploy the servlet project
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:
- By
copying the context(project) folder into the webapps directory
- By
copying the war folder into the webapps directory
- By
selecting the folder path from the server
- By
selecting the war file from the server
Here, we are using the first
approach.
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:
1.
projectfolder> jar cvf myproject.war *
Creating war file has an
advantage that moving the project from one location to another takes less time.
6) How to access the servlet
Open broser and write
http://hostname:portno/contextroot/urlpatternofservlet. For example:
1.
http://localhost:9999/demo/welcome
How Servlet works?
It is important to learn how servlet works for
understanding the servlet well. Here, we are going to get the internal detail
about the first servlet program.
The server checks if the servlet is
requested for the first time.
If yes, web
container does the following tasks:
- loads
the servlet class.
- instantiates
the servlet class.
- calls
the init method passing the ServletConfig object
else
- calls
the service method passing request and response objects
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.
How web container handles the servlet request?
The web container is responsible to handle the request.
Let's see how it handles the request.
- maps
the request with the servlet in the web.xml file.
- creates
request and response objects for this request
- calls
the service method on the thread
- The
public service method internally calls the protected service method
- The
protected service method calls the doGet method depending on the type of
request.
- The
doGet method generates the response and it is passed to the client.
- After
sending the response, the web container deletes the request and response
objects. The thread is contained in the thread pool or deleted depends on
the server implementation.
What is written inside the public service
method?
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:
1.
public void service(ServletRequest req, ServletResponse res)
2.
throws ServletException, IOException
3.
{
4.
HttpServletRequest request;
5.
HttpServletResponse response;
6.
try
7.
{
8.
request = (HttpServletRequest)req;
9.
response = (HttpServletResponse)res;
10. }
11. catch(ClassCastException e)
12. {
13. throw new ServletException("non-HTTP request or response");
14. }
15. service(request, response);
16. }
What is written inside the protected service
method?
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:
1.
protected void service(HttpServletRequest req, HttpServletResponse resp)
2.
throws ServletException, IOException
3.
{
4.
String method = req.getMethod();
5.
if(method.equals("GET"))
6.
{
7.
long lastModified = getLastModified(req);
8.
if(lastModified == -1L)
9.
{
10. doGet(req, resp);
11. }
12. ....
13. //rest of the code
14. }
15. }
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.
What is war file?
web archive (war) file contains
all the contents of a web application. It reduces the time duration for
transferring file.
Advantage of war file
saves time: The war
file combines all the files into a single unit. So it takes less time while
transferring file from client to server.
How to create war file?
To create war file, you need to
use jar tool of JDK. You need to use -c switch of jar, to create the war file.
Go inside the project directory
of your project (outside the WEB-INF), then write the following command:
1.
jar -cvf projectname.war *
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).
How to deploy the war file?
There are two ways to deploy the
war file.
- By
server console panel
- By
manually having the war file in specific folder of server.
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.
Note: server will extract the war file internally.
How to extract war file manually?
To extract the war file, you need
to use -x switch of jar
tool of JDK. Let's see the
command to extract the war file.
1.
jar -xvf projectname.war
No comments:
Post a Comment