2.1 HttpServletRequest-klasse

Het meeste werk dat uw servlet moet doen, is gebaseerd op de informatie die van het verzoek is ontvangen. Het object is ervoor verantwoordelijk HttpServletRequest, wat de container zal doorgeven aan uw servlet (naar de methode serviceof methoden doGet(), doPost()etc.)

Dit object heeft nogal wat methoden, omdat het eenvoudig de verzoekgegevens opslaat en daardoor kunt u communiceren met de container.

Methoden kunnen worden onderverdeeld in 2 grote groepen:

  • Methoden met betrekking tot gebruikersautorisatie
  • Methoden voor het werken met querygegevens

Ik zal de autorisatiemethoden van de gebruiker in de vorm van een tabel geven, maar we zullen ze niet analyseren. Het feit is dat ze zeer zelden worden gebruikt om een ​​gebruiker te autoriseren. Alle populaire frameworks gebruiken hun eigen, veel geavanceerdere autorisatiebenaderingen.

Ik zou ze moeten opsommen, maar nogmaals, ik heb nog niemand ze zien gebruiken.

Methode Beschrijving
1 authenticate(HttpServletResponse) Voert antwoordauthenticatie uit
2 changeSessionId() Wijzig de sessie-ID geforceerd
3 getAuthType() Retourneert het type authenticatie dat wordt gebruikt: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Retourneert gebruikerslogin
5 getRequestedSessionId() Retourneert de SessionID van de client
6 getSession() Retourneert een HttpSession-object
7 getUserPrincipal() Retourneert een java.security.Principal-object
8 login(username, password) Voert gebruikersaanmelding uit
9 logout() Logt de gebruikerssessie uit

2.2 Gegevens opvragen

De tweede groep methoden is veel interessanter. Wat voor gegevens hebben we in het verzoek?

  • http-methode
  • URI
  • Opties
  • Titels

Laten we eens kijken welke methoden beschikbaar zijn om ermee te werken:

Methode Beschrijving
1 getMethod() Retourneert HTTP-methode: GET, POST, DELETE, ...
2 getRequestURI() Retourneert de aanvraag-URI: http://codegym.cc/my/data
3 getRequestURL() Retourneert de verzoek-URL: http://codegym.cc/my/data
4 getQueryString() Retourneert Query, d.w.z. alles na de ?
5 getParameterMap() Retourneert een lijst met queryparameters
6 getParameter(String name) Retourneert de waarde van de parameter op naam
7 getContentType() Retourneert MimeType-aanvraagtekst
8 getReader() Lezer om de hoofdtekst van het verzoek als tekst te lezen
9 getInputStream() InputStream om verzoektekst als byte te lezen[]
10 getSession() Retourneert een HttpSession-object
elf getCookies() Retourneert een reeks Cookie[]-objecten
12 getHeaderNames() Retourneert een lijst met titels, alleen namen
13 getHeader(String name) Retourneert de kopwaarde op naam
14 getServletPath() Retourneert het deel van de URL dat naar de servlet verwijst
15 getContextPath() Retourneert het deel van de URI dat de inhoud van de aanvraag specificeert

En dat zijn nog niet eens alle methoden ...

Hoewel nadat we het HTTP-protocol hebben bestudeerd en hebben geleerd hoe we met HttpClient moeten werken, is alles hier min of meer bekend, nietwaar?

Laten we een servlet schrijven waaraan tekst en een kleur kunnen worden doorgegeven, en het zal een HTML-pagina retourneren met die tekst geschreven in de opgegeven kleur. Wat vind je van het idee?

Laten we beginnen met het schrijven van onze servlet:

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

Nu moeten we de tekst en kleur van de URI door de gebruiker laten doorgeven:

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");

    }
}

En tot slot moet u de tekst uitvoeren als HTML. We zullen dit in de volgende lezing behandelen, maar hier zal ik een kleine hint geven:

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();
        }
    }
}