0% found this document useful (0 votes)
52 views18 pages

Servlet Lecture 1

This document discusses servlets and how they work. It covers: - The main responsibilities of a servlet in handling requests and responses - A simple "Hello World" servlet example - How servlets generate and send HTML responses - The servlet lifecycle methods like init, service, destroy - Advantages of servlets over CGI scripts like improved performance - Common servlet methods like doGet, doPost that services requests

Uploaded by

Priyanshu sharma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views18 pages

Servlet Lecture 1

This document discusses servlets and how they work. It covers: - The main responsibilities of a servlet in handling requests and responses - A simple "Hello World" servlet example - How servlets generate and send HTML responses - The servlet lifecycle methods like init, service, destroy - Advantages of servlets over CGI scripts like improved performance - Common servlet methods like doGet, doPost that services requests

Uploaded by

Priyanshu sharma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

Servlet Lecture 1

--By Neha Bagwari


Client Server Communication
A Servlet’s Job
 Read explicit data sent by client (form data)
 Read implicit data sent by client
(request headers)
 Generate the results
 Send the explicit data back to client (HTML)
 Send the implicit data to client
(status codes and response headers)
HelloWorld.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
A Servlet That Generates
HTML
Tell the browser that you’re sending it
HTML
response.setContentType("text/html");
Modify the println statements to build a
legal Web page
Print statements should output HTML tags
A Servlet That Generates HTML
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(“<HTML>\n" +
"<HEAD><TITLE>Hello</TITLE></HEAD>\n"+
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>Hello</H1>\n" +
"</BODY></HTML>");
}
}
The Servlet Life Cycle
• init
– Executed once when the servlet is first loaded.
Not called for each request.
• service
– Called in a new thread by server for each request.
Dispatches to doGet, doPost, etc.
• doGet, doPost, doXxx
– Handles GET, POST, etc. requests.
• destroy
– Called when server deletes servlet instance.
Not called after each request.
CGI Scripts
• CGI stands for “Common Gateway Interface”

Client sends a request to server

Server starts a CGI script


client server
Script computes a result for server
and quits client
script
Server returns response to client
Another client sends a request
Server starts the CGI script again
Etc.
Servlets
• A servlet is like an applet, but on the server side

Client sends a request to server

Server starts a servlet


client server
Servlet computes a result for
server and does not quit client
servlet
Server returns response to client
Another client sends a request
Server calls the servlet again
Etc.
Servlets vs. CGI scripts
• Advantages:
– Running a servlet doesn’t require creating a separate
process each time
– A servlet stays in memory, so it doesn’t have to be
reloaded each time
– There is only one instance handling multiple requests,
not a separate instance for every request
• Disadvantage:
– Less choice of languages (CGI scripts can be in any
language)
Servlets
In practice, most servlets extend the
javax.servlet.http.HttpServlet class
Some servlets extend
javax.servlet.GenericServlet instead
Important servlet methods
• When a servlet is first started up, its init(ServletConfig
config) method is called
– init should perform any necessary initializations
• Every servlet request results in a call to
service(ServletRequest request, ServletResponse
response)
– service calls another method depending on the type of
service requested
– Usually you would override the called methods of
interest, not service itself
– service handles multiple simultaneous requests, so it
and the methods it calls must be thread safe
• When the servlet is shut down, destroy() is called
– destroy is called only once, but must be thread safe
(because other threads may still be running)
The superclass
• Every class must extend GenericServlet or a subclass
of GenericServlet
– GenericServlet is “protocol independent,” so you
could write a servlet to process any protocol
– In practice, you almost always want to respond to an
HTTP request, so you extend HttpServlet
• A subclass of HttpServlet must override at least one
method, usually one doGet, doPost, doPut, doDelete,
init and destroy, or getServletInfo
The doGet method
• public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
• This method services a GET request
• The method uses request to get the information that was
sent to it
• The method does not return a value; instead, it uses
response to get an I/O stream, and outputs its response
• Since the method does I/O, it can throw an IOException
• Any other type of exception should be encapsulated as a
ServletException
• The doPost method works exactly the same way
GET and POST Method
• A GET request supplies parameters in the form
URL ? name=value & name=value &
name=value
– (Illegal spaces added to make it more legible)
– Actual spaces in the parameter values are encoded
by + signs
– Other special characters are encoded in hex; for
example, an ampersand is represented by %26
• Parameter names can occur more than once, with
different values
• A POST request supplies parameters in the same
syntax, only it is in the “body” section of the request
and is therefore harder for the user to see
Getting the parameters
• Input parameters are retrieved via messages to the
HttpServletRequest object request
– Most of the interesting methods are inherited from the
superinterface ServletRequest
• public Enumeration getParameterNames()
– Returns an Enumeration of the parameter names
– If no parameters, returns an empty Enumeration
• public String getParameter(String name)
– Returns the value of the parameter name as a String
– If the parameter doesn’t exist, returns null
– If name has multiple values, only the first is returned
• public String[] getParameterValues(name)
– Returns an array of values of the parameter name
– If the parameter doesn’t exist, returns null
Example of input parameters
public void doGet(HttpServletRequest request,
HttpServletResponse response) {
... ...
out.println("<H1>Hello");
String names[] =
request.getParameterValues("name");
if (names != null)
for (int i = 0; i < names.length; i++)
out.println(" " + names[i]);
out.println("!");
}
Java review: Data from Strings
• All parameter values are retrieved as Strings
• Frequently these Strings represent numbers, and you want the
numeric value
– int n = new Integer(param).intValue();
– double d = new Double(param).doubleValue();
– byte b = new Byte(param).byteValue();
• Similarly for short, float, and long
• These can all throw a NumberFormatException,
which is a subclass of RuntimeException
– boolean p = new Boolean(param).booleanValue();
• But:
– char c = param.charAt(0);

You might also like