Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement.
L'environnement, dans le cas d'une servlet est:
Java permet d'accèder à ces variables grâce à des méthodes
de l'objet HttpServletRequest.
Java fournit une méthode correspondant à chaque variable d'environnement.
Voici la liste des méthodes de l'objet HttpServletRequest permettant de récupérer
des variables d'environnement :
Variable d'environnement |
Méthode associée
|
AUTH_TYPE |
getAuthType() |
CONTENT_LENGTH |
getContentLength() |
CONTENT_TYPE |
getContentType() |
HTTP_ACCEPT |
getHeader("Accept") |
HTTP_REFERER |
getHeader("Referer") |
HTTP_USER_AGENT |
getHeader("User-Agent") |
PATH_INFO |
getPathInfo() |
PATH_TRANSLATED |
getPathTranslated() |
QUERY_STRING |
getQueryString() |
REQUEST_METHOD |
getRequestMethod() |
REMOTE_ADDR |
getRemoteAddr() |
REMOTE_HOST |
getRemoteHost() |
REMOTE_USER |
getRemoteUser() |
SCRIPT_NAME |
getScriptName() |
SERVER_NAME |
getServerName() |
SERVER_PROTOCOL |
getServerProtocol() |
SERVER_PORT |
getServerPort() |
Toutefois, toutes les variables d'environnement ne sont pas forcément associée
à une méthode de l'objet HttpServletRequest, c'est pourquoi ce dernier propose
des méthodes permettant de récupérer individuellement les variables d'environnement
du serveur d'après leur nom, ainsi que des méthodes permettant d'en récupérer
la liste.
La méthode getHeader() de l'objet HttpServletRequest permet de récupérer
la valeur d'une variable d'environnement dont le nom est pasSé en paramètre :
public String getHeader(String nomEnTete)
Il est possible de récupérer l'ensemble des noms des en-têtes disponibles
dans un objet Enumeration (il est alors nécessaire d'importer java.util.*) grâce à la méthode getHeaderNames() de l'objet HttpServletRequest :
public Enumeration getHeader()
L'objet Enumeration retourné peut alors être parcouru grâce à ses
méthodes hasMoreElements() et nextElement() :
Enumeration enTetes = req.getHeaderNames();
while (enTetes.hasMoreElements()) {
String enTete = (String) enTetes.nextElement();
}
Le code suivant permet d'afficher un tableau contenant l'ensemble de en-têtes présents dans la requête :
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*
import java.util.*
public class PremiereServlet extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE> Tableau des en-têtes HTTP </TITLE></HEAD>");
out.println("<BODY>");
out.println(req.getRemoteAddr());
out.println("<table border=\"1\" cellspacing=\"0\">");
Enumeration enTetes = req.getHeaderNames();
while (enTetes.hasMoreElements()) {
String enTete = (String) enTetes.nextElement();
out.println("<tr><td>"
+ enTete
+ "</td><td>"
+ req.getHeader(enTete)
+ "</td></tr>");
}
out.println("</table>");
out.println("</HTML>");
out.close();
out.println(" |