Kihagyás

Web tananyag kivonat

Servlet létrehozás

A servlet egy Java osztály ami megfelelő őssel rendelkezik (HttpServlet)

1
public class PeldaServlet extends HttpServlet {}

Végpont meghatározása

A végpont az az útvonal amit beírva eljutunk a szervletünkhöz. Egy szerveren több végpont szokott lenni, így az adott szervlethez meg kell adni, melyik végponthoz köthető. Ezt a WebServlet annotációval tehetjük meg.

1
2
@WebServlet("/vegpont/utvonal/megadasa")
public class PeldaServlet extends HttpServlet {}

Több útvonal egy servletre

Ebben az esetben több útvonal is köthető egy szervletre. Ez nem probléma, hiszen mindig fix, melyik osztály kell kezelje a kérést. Több osztály azonos útvonallal nem annotálható, hiszen nem tudná a rendszer melyik kezelje a kérést.

1
2
@WebServlet(urlPatterns = {"/path1", "/path2/pőerlda"})
public class PeldaServlet extends HttpServlet {}

Ha az útvonal elejét akarjuk fixre és a vége bármi lehet, akkor használhatunk '*'-t.

1
2
@WebServlet("/path/fix/*")
public class PeldaServlet extends HttpServlet {}
Ekkor a * helyett bármi állhat, ezt le tudjuk majd kérni.

Kérések feldolgozása

A kéréseknek van típusa, pl. GET, POST, DELETE, PUT stb. Ezeket úgy tudjuk kezelni, hogy a megfelelő metódusát definiáljuk felül az ősosztálynak: doMETHODNAME.

1
2
3
4
@WebServlet("/vegpont/get/keres")
public class PeldaServlet extends HttpServlet {
    doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {}
}
1
2
3
4
@WebServlet("/vegpont/post/keres")
public class PeldaServlet extends HttpServlet {
    doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {}
}
1
2
3
4
5
@WebServlet("/vegpont/multi/keres")
public class PeldaServlet extends HttpServlet {
    doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {}
    doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {}
}

Válasz objektum írása

A válasz objektum tartalmaz mindent amit a kliensnek szeretnénk küldeni, legyen az header vagy a válasz törzse maga.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
@WebServlet("/vegpont/get/keres")
public class PeldaServlet extends HttpServlet {
    doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        var writer = resp.getWriter();
        // writer objektum a válasz törzsét írja, pl. egy JSON itt megadható

        resp.setStatus(200);
        // státuszkód beállítása
    }
}

Kérés objektum olvasása

Minden a klienstől kapott információ a request objektumban érhető el, így pl. a kérés paraméterei, törzse esetleg az útvonal is.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
@WebServlet("/vegpont/get/keres/*")
public class PeldaServlet extends HttpServlet {
    doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        var reader = req.getReader();
        // ezzel a kérés törzsét olvashatjuk ki

        String paramName = req.getParameter("paramName");
        // kérés paraméterei kiolvashatók név alapján. Ha az adott névhez nincs rendelve, akkor null.

        String vegpontPath = req.getPathInfo();
        String utolsoUtvonalResz = vegpontPath.substring(1);
        // *-hoz köthető, amíg nem tartalmaz /-t a csillagos rész.
    }
}

Cookie-kat a kérésből olvashatunk és a válaszba írhatunk. Egy cookie-t a neve azonosít egy adott útvonalhoz van rendelve, ez lehet a root (/) is.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
@WebServlet("/vegpont/cookie")
public class PeldaServlet extends HttpServlet {
    doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        Cookie[] keresCookies = req.getCookies();
        // vagy van cookie vagy nincs -> ez null is lehet
        if ( keresCookies != null ) {
            for ( var cookie : keresCookies ) {
                // cookie feldolgozás pl. név alapján
            }
        }

        var cookie = new Cookie("nev", "ertek");
        cookie.setPath("/");
        // cookie specifikus tulajdonságok

        resp.addCookie(cookie); // hozzáadjuk a válaszhoz. Csak ez lesz benne.
    }
}

Utolsó frissítés: 2024-04-30 08:08:29