Comment réaliser un Servlet Java

C'est un programme d'application Web écrit en Java, qui s'exécute sur le serveur en interaction avec le client distant. Il délivre au client des données en HTML ou autre format.
Le client peut accéder au servlet avec le navigateur par une URL. Il fonctionne dans un serveur spécial, un conteneur de servlets.

Conteneur de servlets

C'est un serveur Web spécialisé et un environnement d'exécution propre aux servlets contenus, qui fournit l'API des classes et méthodes qu'ils peuvent utiliser. On a des exemples de ces classes ci-dessous.

Le plus connu est Apache Tomcat (différent du serveur Apache), qui est aussi un serveur HTTP.

On parle aussi de conteneur web ou de moteur web. A coté de Tomcat citons aussi Jetty, Geronimo, Winstone, Jaminid.
JBoss encapsule Tomcat.

Exemple de servlet minimal

Hello World! affiché par un servlet:

package demo;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class HelloServlet extends HttpServlet 
{
  public void doGet (HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException  
    {
      PrintWriter out = res.getWriter();
      out.println("Hello, world!");
      out.close();
  }
}

Obtenir le code source Java.

Autre exemple proposé par Apple qui produit une page HTML:

import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.rmi.*;


public class HelloWorldServlet extends HttpServlet 
{
    private HelloWorld hw = null;
    public HelloWorldServlet() throws NamingException
    {
        Context ctx = new InitialContext();
        HelloWorldHome home = (HelloWorldHome)
        PortableRemoteObject.narrow(ctx.lookup("HelloWorld"),
        HelloWorldHome.class);
        try {   this.hw = home.create();   } catch (Exception e) { }
    }
   public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
   {
       response.setContentType("text/html");
       PrintWriter out = response.getWriter();
       out.println("<html>");
       out.println("<head>");
       out.println("<title>Démonstration</title>");
       out.println("</head>");
       out.println("<body>");
       out.println("<h1>Salut le Monde! </h1>");
       out.println(this.hw.hi());
       out.println("</body>");
       out.println("</html>");
   }
}

Télécharger le code source complet.

Ce servlet génére la page HTML suivante:

<html>
<head>
   <title>Démonstration</title>
</head>
<body>
   <h1>Salut le Monde!</h1>
   ... contenu de l'utilisateur...
</body>
</html>

Outils et ressources

Technologies de la programmation Ajax - API - Cassandra - CLI - Code HTTP - Cookie - Cover Flow - Dalvik - DFA - .NET - EDI (ou IDE) - Flash - GUI - JavaFX - JNA - JSON - MySQL - NaCl - NoSQL - Protocol Buffers - Qt - REST - Servlet - Web 2.0 - WebGL - Webkit - WinRT - Wysiwyg