2.1 Clasa HttpServletRequest

Cea mai mare parte a activității pe care servletul tău trebuie să o facă pe baza informațiilor primite din solicitare. Obiectul este responsabil pentru acesta HttpServletRequest, pe care containerul îl va transmite servlet-ului dumneavoastră (metodei servicesau metodelor doGet()etc. doPost())

Acest obiect are destul de multe metode, deoarece stochează pur și simplu datele cererii și prin intermediul acestuia puteți interacționa cu containerul.

Metodele pot fi împărțite în două grupuri mari:

  • Metode legate de autorizarea utilizatorului
  • Metode de lucru cu datele de interogare

Voi da utilizatorilor metode de autorizare sub forma unui tabel, dar nu le vom analiza. Cert este că sunt foarte rar folosite pentru a autoriza un utilizator. Toate cadrele populare folosesc propriile lor abordări mult mai avansate pentru autorizare.

Ar trebui să le enumerez, dar din nou, nu am văzut pe nimeni să le folosească.

Metodă Descriere
1 authenticate(HttpServletResponse) Efectuează autentificarea răspunsului
2 changeSessionId() Schimbați forțat ID-ul sesiunii
3 getAuthType() Returnează tipul de autentificare utilizat: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Returnează datele de conectare ale utilizatorului
5 getRequestedSessionId() Returnează SessionID-ul clientului
6 getSession() Returnează un obiect HttpSession
7 getUserPrincipal() Returnează un obiect java.security.Principal
8 login(username, password) Efectuează autentificarea utilizatorului
9 logout() Se deconectează sesiunea utilizator

2.2 Solicitați date

Al doilea grup de metode este mult mai interesant. Ce fel de date avem în cerere?

  • metoda http
  • URI
  • Opțiuni
  • Titluri

Să vedem ce metode sunt disponibile pentru a lucra cu ele:

Metodă Descriere
1 getMethod() Returnează metoda HTTP: GET, POST, DELETE,...
2 getRequestURI() Returnează URI-ul solicitării: http://codegym.cc/my/data
3 getRequestURL() Returnează adresa URL a solicitării: http://codegym.cc/my/data
4 getQueryString() Returnează Interogare, adică totul după ?
5 getParameterMap() Returnează o listă de parametri de interogare
6 getParameter(String name) Returnează valoarea parametrului după numele său
7 getContentType() Returnează corpul solicitării MimeType
8 getReader() Cititorul pentru a citi corpul solicitării ca text
9 getInputStream() InputStream pentru a citi corpul cererii ca octet[]
10 getSession() Returnează un obiect HttpSession
unsprezece getCookies() Returnează o matrice de obiecte Cookie[].
12 getHeaderNames() Returnează o listă de titluri, numai nume
13 getHeader(String name) Returnează valoarea antetului după nume
14 getServletPath() Returnează partea din adresa URL care se referă la servlet
15 getContextPath() Returnează partea din URI care specifică conținutul cererii

Și asta nu sunt nici măcar toate metodele...

Deși după ce am studiat protocolul HTTP și am învățat cum să lucrăm cu HttpClient, totul este mai mult sau mai puțin familiar aici, nu-i așa?

Să scriem un servlet căruia i se poate transmite text și o culoare și va returna o pagină HTML cu acel text scris în culoarea specificată. Cum vi se pare ideea?

Să începem prin a scrie servlet-ul nostru:


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

Acum trebuie să obținem textul și culoarea transmise de la URI de către utilizator:


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

Și, în sfârșit, trebuie să scoateți textul ca HTML. Vom acoperi acest lucru în următoarea prelegere, dar aici voi da un mic indiciu:

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