Servlets are java
technology’s answer to CGI programming. CGI was widely used for generating
dynamic content before Servlets arrived.
They were programs written mostly in C,C++ that run on a web server and
used to build web pages.
As in the figure
below, a client sends a request to web server, server forwards that request to
a servlet, servlet generates dynamic content, mostly in the form of HTML pages,
and returns it back to the server, which sends it back to the client. Hence we
can say that servlet is extending the functionality of the webserver.
For making servlets, we need below s/w:
- J2SE
- Additional J2EE based libraries for servlets such
as servlet-api.jar and jsp-api.jar.
Since these libraries are not part of J2SE.
- A capable servlet web engine (webserver).
Apache Tomcat
==========================
Apache Tomcat is an open source web server, which is used as an official reference implementation of Java Servlets and JSP technologies. Tomcat is developed in an open and participatory environment and released under the Apache software license.
==========================
Apache Tomcat is an open source web server, which is used as an official reference implementation of Java Servlets and JSP technologies. Tomcat is developed in an open and participatory environment and released under the Apache software license.
Environment Setup
- From the http://tomcat.apache.org,
download the zip file for the current release (any latest version) on C:\ drive and extract.
- Create a new environment variable JAVA_HOME and
set its value to the installation directory of JDK (e.g.: C:\Program Files\Java\jdk1.6.0_17).
- Create another CATALINA_HOME environment variable.
Its value should be the path till top-level Tomcat directory (C:\apache-tomcat-6.0.16).
- Since servlets and JSP are not part of the J2SE, we have to identify servlet classes to the compiler. The server already knows about the servlet classes, but the compiler (i.e., javac) does not. So set CLASSPATH variable to C:\apache-tomcat-6.0.16\lib\servlet-api.jar;C:\apache-tomcat-6.0.16\lib\jsp-api.jar;.;
- For testing this setup, from bin folder, run startup.bat file. Then open
up a browser window and type http://localhost:8080. This should open the
default page of Tomcat.
Standard Directory
Structure of a J2EE Web Application
- The webapps folder is the top-level Tomcat
directory that contains all the web applications deployed on the server.
- Create a folder named myapp in C:\apache-tomcat-6.0.16\webapps folder. This name will also appear
in the URL for application. For example http://localhost:8080/myapp/index.html.
All JSP and html files will be kept in main application folder
(myapp).
- Create another folder inside myapp folder and
change its name to WEB-INF. Configuration files such as web.xml will go in
WEB-INF folder.
- Create another folder inside WEB-INF folder and
change its name to classes. Servlets and Java Beans will go in classes
folder.
- To test application hierarchy, make a simple html file e.g. index.html file. Write some basic HTML code into it and save it in main application directory i.e. webapps\myapp.
- Restart the server and access it by using the URL
http://localhost:8080/myapp/index.html
Servlet Types
==========================
Servlet related classes are included in two main packages javax.servlet and javax.servlet.http. Every servlet must implement the javax.servlet.Servlet interface; it contains servlet’s life cycle methods etc.
==========================
Servlet related classes are included in two main packages javax.servlet and javax.servlet.http. Every servlet must implement the javax.servlet.Servlet interface; it contains servlet’s life cycle methods etc.
GenericServlet
class
- Available in
javax.servlet package.
- Implements javax.servlet.Servlet.
- We need to extend our class from this class if we are
interested in writing protocol independent servlets.
HttpServlet class
- Available in
javax.servlet.http package
- Extends from GenericServlet class
- Adds functionality for writing HTTP specific
servlets as compared to GernericServlet
- We need to extend our class from HttpServlet, if we want
to write HTTP based servlets.
Servlet Class Hierarchy
==========================
Like all java classes GenericServlet also inherits from Object class. Apart from GenericServlet and HttpServlet classes, ServletRequest, HttpServletRequest, ServeltResponse and HttpServletResponse are also helpful in writing a servlet. ServletRequest & ServletResponse are used in conjunction with GenericServlet.
HttpServletRequest & HttpServletRespose are used for processing HTTP protocol specific requests and generating HTTP specific response. Obviously these classes will be used in conjunction with HttpServet class, which means you are making a HTTP protocol specific servlet.
==========================
Like all java classes GenericServlet also inherits from Object class. Apart from GenericServlet and HttpServlet classes, ServletRequest, HttpServletRequest, ServeltResponse and HttpServletResponse are also helpful in writing a servlet. ServletRequest & ServletResponse are used in conjunction with GenericServlet.
HttpServletRequest & HttpServletRespose are used for processing HTTP protocol specific requests and generating HTTP specific response. Obviously these classes will be used in conjunction with HttpServet class, which means you are making a HTTP protocol specific servlet.
GET & POST,
HTTP request types
==========================
GET
==========================
GET
- Attribute-Value pair is
attached with requested URL after ‘?’. For example if attribute is ‘name’
and value is ‘abc’ then the request
will be http://www.gmail.com/register?name=abc.
- For HTTP based servlet, we have to override doGet() methods
of HttpServlet class to handle these type of requests.
POST
- Attribute-Value pair
attached within the request body.
- For this we have to override doPost() method of HttpServlet class to handle POST type requests.
Steps for making a Hello
World Servlet
==========================
1) Create a directory structure for application (i.e. helloapp).
2) Create a HelloWorldServlet source file by extending this class from HttpServlet and overriding desired method. For example doGet() or doPost().
3) Compile it and place the class file of HelloWorldServlet in the classes folder of web application.
4) Create a deployment descriptor (web.xml) and put it inside WEB-INF folder.
5) Restart the server if already running access it using Web browser.
==========================
1) Create a directory structure for application (i.e. helloapp).
2) Create a HelloWorldServlet source file by extending this class from HttpServlet and overriding desired method. For example doGet() or doPost().
public class HelloWorldServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println(“Hello World! ”); } // end doGet() }
3) Compile it and place the class file of HelloWorldServlet in the classes folder of web application.
4) Create a deployment descriptor (web.xml) and put it inside WEB-INF folder.
HelloWorldServlet HelloWorldServlet HelloWorldServlet /myfirstservlet
5) Restart the server if already running access it using Web browser.
http://localhost:8080/myapp/myfirstservlet
No comments:
Post a Comment