|
| |
A servlet is a server-side component, written in Java, that dynamically
extends the functionality of a server. Usually, we're talking about a web
server.
A servlet replaces the CGI program in a pure CGI solution. It has a
number of advantages over a CGI program:
- Can be run in-process, avoiding the time and overhead of CGI processes.
- Is compiled, which can improve performance over non-compiled languages
such as Perl.
- Multithreaded
- Extensible
- Portable across server operating systems and web servers.
Basic Servlet Structure
Here's a simple servlet that handles a GET request:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* SimpleServlet.java
*
* Created on November 24, 2006
*/
/**
* Simple Servlet Example.
*
* @author Bryan Higgs
* @version
*/
public class SimpleServlet extends HttpServlet
{
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("Hello from a very simple servlet!");
out.close();
}
}
|
It outputs just plain text:

If you'd like to generate an HTML document, you'll have to add slightly more
stuff.
Here is a simple servlet that:
and
- Handles both
GET and POST HTTP requests
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* SimpleHtmlServlet.java
*
* Created on November 24, 2006
*/
/**
* A simple servlet that produces an HTML page.
*
* @author Bryan Higgs
* @version
*/
public class SimpleHtmlServlet extends HttpServlet
{
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
String docType = "<!DOCTYE html PUBLIC \"-//w3c//DTD XHTML 1.0 Strict//EN\"" +
" \"http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
out.println(docType +
"<html>\n" +
"<head><title>A simple HTML document</title></head>\n" +
"<body>\n" +
" <h1>This is a simple HTML document</h1>\n" +
" <h2>Produced by a simple servlet</h2>" +
"</body>\n" +
"</html>"
);
out.close();
}
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo()
{
return "Simple HTML Servlet";
}
}
|
which produces:

|