protected void processRequest(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 response.sendRedirect("images/toto.jpg");

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
processRequest(request,response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
processRequest(request,response);
Élaborer une réponse HTTP.
Les codes de status sont répartis en 5 catégories :
Le détail des codes est disponible chez http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
... permettent de changer le status d'erreur de la page. Pour exemple nous allons générer une erreur serveur.
package servlet;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 * Servlet implementation class ReponseHTTP
@WebServlet("/ReponseHTTP")
public class ReponseHTTP extends HttpServlet {
private static final long serialVersionUID = 1L;
 /**
 * @see HttpServlet#HttpServlet()
 public ReponseHTTP() {
 super();
 // TODO Auto-generated constructor stub
 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 response.setContentType("text/html;charset=UTF-8");
 PrintWriter out = response.getWriter();
 try {
 response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "le serveur est surchargé. Veuillez réessayer plus tard");
 } finally {
 out.close();
/**
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
processRequest(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
processRequest(request, response);
Autres ressources.
RequestDispatcher.
include.
Inclusion d'une ressource externe.
RequestDispatcher rd = null;
rd = getServletContext().getRequestDispatcher("/header.html");
rd.include(request, response);
forward.
Transfert du resultat d'une servlet vers une autre ressource.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.HttpServlet;
import javax.servlet.HttpServletRequest;
import javax.servlet.HttpServletResponse;
public class Result extends HttpServlet {
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 response.setContentType("text/html;charset=UTF-8");
 PrintWriter out = response.getWriter();
 try {
 int result = 10;
 RequestDispatcher rd = null;
 rd = getServletContext().getRequestDispatcher("/result.jsp");
 request.setAttribute("resultat", result);
 rd.forward(request, response);
 } finally {
 out.close();
La ressource de destination : result.jsp
<%@page contentType="text/html" pageEncoding="UTF-8">
<%@page import="java.text.*" %>
<html>
 <body>
 resultat=(double) request.getAttribute("resultat");
 Resultat : <%= resultat %>
 </body>
</html>
Redirection.
Le serveur informe le navigateur de faire une requête HTTP vers l'url indiquée.
location.
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); // Pour une réponse HTTP 301
response.setHeader("location", "http://www.google.be"); // Pour une réponse HTTP 302
redirect.
response.sendRedirect("http://www.google.be");
Filtres.
Les filtres ajoutent un traitement sur une requête HTTP avant qu'elle soit reçue par une servlet ou sur la réponse HTTP avant qu'elles soient transmises.
Leurs roles sont :
Plusieurs réponses peuvent être exécutées successivement. La classe filtre doit implémenter codice_1.
Évènements.
Les évènements nous informent des opérations de l'application comme l'instanciation et la destruction des objets.
Synchronisation des servlets.
Cette synchronisation permet d'éviter au serveur d'utiliser deux threads en même temps, par exemple, lorsque deux instances de la même classe appellent une même méthode par deux clients différents. synchronized(this){} doit être appliquées aux traitements critiques comme les compteurs.
public class ... {
 public void method() {
 out = response.getWriter();
 synchronized(this) {
 compteur++;
 out.println("La valeur du compteur est " + compteur);

Programmation JEE/Configurer Eclipse
Apache Tomcat.
Sa version Helios se configure facilement pour travailler avec un serveur 7.
Pour ce faire, il faut :
À l'exécution du projet sous Eclipse ou au débogage, Eclipse chargera le projet dans une instance de Tomcat.
Lancement.
Pour initier un environnement de développement JEE il faut :
N'hésitez pas à faire des tests dans ce répertoire mais ne touchez pas au répertoire "Server", ou il faudra recommencer la procédure de configuration de Tomcat s'il est corrompu.
Pour reconfigurer Tomcat dans les préférences, il faudra alors effacer ce répertoire "Server".

Programmation JEE/Le protocole HTTP
Les clients JEE utilisent le protocole HTTP pour communiquer avec un serveur JEE. HTTP définit les demandes qu'un client peut envoyer à un serveur et les réponses que le serveur peut envoyer en réponse. Chaque demande contient une URL, qui est une chaîne qui identifie un composant Web ou d'un objet statique, comme une page HTML ou un fichier image.
Le serveur JEE convertit une requête HTTP à un objet de requête HTTP et la remet à la composante Web identifiées par l'URL de requête. Le composant Web remplit un objet de réponse HTTP, le serveur qui convertit en réponse HTTP et l'envoie au client.
Requêtes HTTP.
Exemple :
Une requête HTTP se compose d'une méthode, une URL, les champs d'en-tête et un corps. HTTP 1.1 définit les méthodes demande suivante:
HTTP 1.0 ne comprend que les méthodes GET, HEAD et POST.
Bien que les serveurs JEE n'ont besoin de supporter que le protocole HTTP 1.0, en pratique, de nombreux serveurs, y compris ceux du SDK JEE, prennent en charge HTTP 1.1.
Les réponses HTTP.
Exemple :
Une réponse HTTP contient un code de résultat, les champs d'en-tête et un corps. Le protocole HTTP prévoit le code de résultat et de tous les champs d'en-tête à retourner avant tout le contenu du corps.
Certains codes d'état couramment utilisés sont les suivants:
Contenu de la réponse.
Le contenu de la réponse suit la liste des en-têtes HTTP.
Sa taille peut être connue à l'avance et spécifiée dans le champ codice_1.
C'est le cas des fichiers envoyés directement comme réponse (HTTP statique).
Pour les réponses dynamiques (générées par un script par exemple), la taille n'est pas connue à l'avance.
Le serveur peut stocker en mémoire le contenu afin de connaitre la taille.
Cependant ce stockage doit avoir une limite afin de ne pas être à cours de mémoire pour les réponses dynamiques de grande taille.
Dans ce cas, si le client le supporte, le serveur peut utiliser l'encodage en morceaux ("chunked").
Le serveur ne spécifie pas la taille (donc pas de codice_1 spécifié), et fournit le contenu au client par morceaux de taille fixe spécifiée avant chaque morceau.
Le dernier morceau comportant une taille nulle pour indiquer la fin de la réponse.

Photographie/Fabricants/Ordro
La société Ordro a été créée en 2002, elle fabrique essentiellement des camescopes, mais aussi des appareils photo numériques, elle est aussi un sous-traitant important pour de nombreuses autres marques.

JEE
Photographie/Fabricants/Ordro/Ordro G1000

Photographie/Fabricants/Samsung/Samsung ST600

Photographie/Fabricants/Sony/Sony Cyber-shot H55

Photographie/Fabricants/Panasonic/Panasonic Lumix DMC-ZS5

Photographie/Fabricants/Rollei/Rollei DP8300

Technologie/Matériaux/Matériaux biocompatibles