2.1 HttpServletRequest osztály

A legtöbb munka a szervletnek a kérésből kapott információk alapján történik. Az objektum felelős érte HttpServletRequest, amit a konténer átad a servletnek (metódusnak servicevagy metódusoknak stb doGet(). doPost())

Ennek az objektumnak jó néhány metódusa van, mivel egyszerűen tárolja a kérésadatokat, és ezen keresztül kommunikálhat a tárolóval.

A módszerek 2 nagy csoportra oszthatók:

  • Felhasználói engedélyezéssel kapcsolatos módszerek
  • A lekérdezési adatokkal való munkavégzés módszerei

A felhasználói jogosultsági módszereket táblázat formájában adom meg, de nem elemezzük őket. Az a tény, hogy nagyon ritkán használják a felhasználó engedélyezésére. Minden népszerű keretrendszer saját, sokkal fejlettebb engedélyezési módszert alkalmaz.

Fel kellene sorolnom őket, de még egyszer mondom, még egyszer nem láttam, hogy valaki használná őket.

Módszer Leírás
1 authenticate(HttpServletResponse) Válasz hitelesítést hajt végre
2 changeSessionId() Módosítsa erőszakkal a munkamenet azonosítóját
3 getAuthType() A használt hitelesítés típusát adja vissza: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Visszaadja a felhasználói bejelentkezést
5 getRequestedSessionId() Az ügyfél SessionID-jét adja vissza
6 getSession() Egy HttpSession objektumot ad vissza
7 getUserPrincipal() Egy java.security.Principal objektumot ad vissza
8 login(username, password) Felhasználói bejelentkezést hajt végre
9 logout() Kijelentkezteti a felhasználói munkamenetet

2.2 Adatkérés

A módszerek második csoportja sokkal érdekesebb. Milyen adatok szerepelnek a kérelemben?

  • http módszer
  • URI
  • Lehetőségek
  • Címek

Nézzük meg, milyen módszerek állnak rendelkezésre a velük való munkához:

Módszer Leírás
1 getMethod() A HTTP-módszert adja vissza: GET, POST, DELETE, ...
2 getRequestURI() A kérés URI-ját adja vissza: http://codegym.cc/my/data
3 getRequestURL() A kérés URL-jét adja vissza: http://codegym.cc/my/data
4 getQueryString() A Queryt adja vissza, azaz mindent a ?
5 getParameterMap() A lekérdezési paraméterek listáját adja vissza
6 getParameter(String name) A paraméter értékét adja vissza a neve alapján
7 getContentType() A MimeType kérés törzsét adja vissza
8 getReader() Olvasó a kérelem törzsének szövegként történő olvasásához
9 getInputStream() InputStream a kérelem törzsének bájtként való olvasásához[]
10 getSession() Egy HttpSession objektumot ad vissza
tizenegy getCookies() Cookie[] objektumok tömbjét adja vissza
12 getHeaderNames() A címek listáját adja vissza, csak a neveket
13 getHeader(String name) A fejléc értékét név szerint adja vissza
14 getServletPath() Az URL-nek azt a részét adja vissza, amely a szervletre hivatkozik
15 getContextPath() Az URI-nak azt a részét adja vissza, amely meghatározza a kérés tartalmát

És ez még nem minden módszer...

Bár miután tanulmányoztuk a HTTP protokollt, és megtanultuk, hogyan kell dolgozni a HttpClienttel, itt minden többé-kevésbé ismerős, nem igaz?

Írjunk egy servletet, aminek szöveget és színt lehet átadni, és ez egy HTML oldalt ad vissza, amelyen a megadott színnel írják a szöveget. Hogy tetszik az ötlet?

Kezdjük a servlet megírásával:

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

Most meg kell szereznünk a felhasználó által az URI-ból átadott szöveget és színt:

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

    }
}

És végül a szöveget HTML-ként kell kiadnia. A következő előadásban ezzel foglalkozunk, de itt adok egy kis tippet:

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