2.1 Classe HttpServletRequest

La plupart du travail que votre servlet doit faire est basé sur les informations reçues de la requête. L'objet en est responsable HttpServletRequest, que le conteneur transmettra à votre servlet (à la méthode serviceou aux méthodes doGet(), doPost()etc.)

Cet objet a plusieurs méthodes, car il stocke simplement les données de la requête et, à travers lui, vous pouvez interagir avec le conteneur.

Les méthodes peuvent être divisées en 2 grands groupes :

  • Méthodes liées à l'autorisation des utilisateurs
  • Méthodes d'utilisation des données de requête

Je donnerai les méthodes d'autorisation de l'utilisateur sous forme de tableau, mais nous ne les analyserons pas. Le fait est qu'ils sont très rarement utilisés pour autoriser un utilisateur. Tous les frameworks populaires utilisent leurs propres approches d'autorisation beaucoup plus avancées.

Je devrais les énumérer, mais encore une fois, je n'ai vu personne les utiliser.

Méthode Description
1 authenticate(HttpServletResponse) Effectue l'authentification de la réponse
2 changeSessionId() Changer de force l'ID de session
3 getAuthType() Renvoie le type d'authentification utilisé : ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Renvoie la connexion de l'utilisateur
5 getRequestedSessionId() Renvoie le SessionID du client
6 getSession() Renvoie un objet HttpSession
7 getUserPrincipal() Renvoie un objet java.security.Principal
8 login(username, password) Effectue la connexion de l'utilisateur
9 logout() Déconnecte la session utilisateur

2.2 Demander des données

Le deuxième groupe de méthodes est beaucoup plus intéressant. Quel type de données avons-nous dans la demande ?

  • méthode http
  • URI
  • Choix
  • Titres

Voyons quelles méthodes sont disponibles pour travailler avec eux:

Méthode Description
1 getMethod() Renvoie la méthode HTTP : GET, POST, DELETE, ...
2 getRequestURI() Renvoie l'URI de la requête : http://codegym.cc/my/data
3 getRequestURL() Renvoie l'URL de la requête : http://codegym.cc/my/data
4 getQueryString() Renvoie Query, c'est-à-dire tout ce qui suit le ?
5 getParameterMap() Renvoie une liste de paramètres de requête
6 getParameter(String name) Renvoie la valeur du paramètre par son nom
7 getContentType() Renvoie le corps de la requête MimeType
8 getReader() Lecteur pour lire le corps de la requête sous forme de texte
9 getInputStream() InputStream pour lire le corps de la requête en tant qu'octet []
dix getSession() Renvoie un objet HttpSession
onze getCookies() Renvoie un tableau d'objets Cookie[]
12 getHeaderNames() Renvoie une liste de titres, noms uniquement
13 getHeader(String name) Renvoie la valeur d'en-tête par nom
14 getServletPath() Renvoie la partie de l'URL qui fait référence au servlet
15 getContextPath() Renvoie la partie de l'URI qui spécifie le contenu de la requête

Et ce n'est même pas toutes les méthodes...

Bien qu'après avoir étudié le protocole HTTP et appris à travailler avec HttpClient, tout est plus ou moins familier ici, n'est-ce pas ?

Écrivons une servlet à laquelle on peut transmettre du texte et une couleur, et elle renverra une page HTML avec ce texte écrit dans la couleur spécifiée. Comment aimez-vous l'idée?

Commençons par écrire notre servlet :

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
          //write your code here
    }
}

Nous devons maintenant obtenir le texte et la couleur transmis depuis l'URI par l'utilisateur :

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Getting the parameter “text” and “color” from request
        String text= request.getParameter("text");
        String color = request.getParameter("color");

    }
}

Et enfin, vous devez sortir le texte au format HTML. Nous couvrirons cela dans la prochaine conférence, mais ici je vais donner un petit indice :

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Get the "text" and "color" parameters from the request
        String text = request.getParameter("text");
        String color = request.getParameter("color");


        // Print the HTML as a response to the browser
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out =  response.getWriter();
        try {
            out.println("<html>");
            out.println("<head> <title> ColorTextServlet </title> </head>");
            out.println("<body>");
            out.println("<h1 style="color:"+color+">"+text+"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}