2.1 HttpServletRequest-klasse

Det meste af det arbejde, din servlet skal udføre baseret på de oplysninger, der er modtaget fra anmodningen. Objektet er ansvarligt for det HttpServletRequest, som containeren vil videregive til din servlet (til metoden serviceeller metoderne osv doGet(). )doPost()

Dette objekt har en del metoder, da det blot gemmer anmodningsdataene, og gennem det kan du interagere med containeren.

Metoder kan opdeles i 2 store grupper:

  • Metoder relateret til brugerautorisation
  • Metoder til at arbejde med forespørgselsdata

Jeg vil give brugeren godkendelsesmetoder i form af en tabel, men vi vil ikke analysere dem. Faktum er, at de meget sjældent bruges til at autorisere en bruger. Alle populære rammer bruger deres egne, meget mere avancerede tilgange til autorisation.

Jeg burde nævne dem, men igen, jeg har ikke set nogen bruge dem.

Metode Beskrivelse
1 authenticate(HttpServletResponse) Udfører svargodkendelse
2 changeSessionId() Skift sessions-id'et med magt
3 getAuthType() Returnerer den type godkendelse, der bruges: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Returnerer brugerlogin
5 getRequestedSessionId() Returnerer klientens sessions-id
6 getSession() Returnerer et HttpSession-objekt
7 getUserPrincipal() Returnerer et java.security.Principal-objekt
8 login(username, password) Udfører brugerlogin
9 logout() Logger brugersessionen ud

2.2 Anmod om data

Den anden gruppe af metoder er meget mere interessant. Hvilken slags data har vi i anmodningen?

  • http metode
  • URI
  • Muligheder
  • Titler

Lad os se, hvilke metoder der er tilgængelige til at arbejde med dem:

Metode Beskrivelse
1 getMethod() Returnerer HTTP-metoden: GET, POST, DELETE, ...
2 getRequestURI() Returnerer anmodningens URI: http://codegym.cc/my/data
3 getRequestURL() Returnerer anmodningens URL: http://codegym.cc/my/data
4 getQueryString() Returnerer forespørgsel, dvs. alt efter ?
5 getParameterMap() Returnerer en liste over forespørgselsparametre
6 getParameter(String name) Returnerer værdien af ​​parameteren efter dens navn
7 getContentType() Returnerer MimeType-anmodningstekst
8 getReader() Læser til at læse anmodningens brødtekst som tekst
9 getInputStream() InputStream for at læse anmodningstekst som byte[]
10 getSession() Returnerer et HttpSession-objekt
elleve getCookies() Returnerer en matrix af Cookie[]-objekter
12 getHeaderNames() Returnerer en liste over titler, kun navne
13 getHeader(String name) Returnerer overskriftsværdien efter navn
14 getServletPath() Returnerer den del af URL'en, der refererer til servlet'en
15 getContextPath() Returnerer den del af URI'en, der specificerer indholdet af anmodningen

Og det er ikke engang alle metoderne ...

Selvom efter at vi har studeret HTTP-protokollen og lært at arbejde med HttpClient, er alt mere eller mindre velkendt her, ikke?

Lad os skrive en servlet, der kan sendes tekst og en farve til, og den vil returnere en HTML-side med den tekst skrevet i den angivne farve. Hvordan kan du lide ideen?

Lad os starte med at skrive vores servlet:

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

Nu skal vi få teksten og farven sendt fra URI'en af ​​brugeren:

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

    }
}

Og endelig skal du udskrive teksten som HTML. Det kommer vi ind på i næste foredrag, men her vil jeg give et lille hint:

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