1 of 16

Servlet

2 of 16

Servlet

  • Olyan Java objektum, amely kérést dolgoz fel, és választ generál
    • Request-response modellre épül
    • Bővíti az alkalmazás funkcionalitását
  • Javax.servlet könyvtárban
  • Interfész
  • Metódusai:
    • init
    • service
    • destroy
  • A technológia tetszőleges kérés �kiszolgálására alkalmas
    • Leggyakrabban HTTP
  • Normáls esetben csak egy példányban fut
  • Egyszerre több kérést is képes kiszolgálni

3 of 16

Alkalmazásszerver

  • Egy szoftverkeretrendszer, amely olyan környezetet biztosít, amelyben tetszőleges alkalmazások futhatnak, függetlenül attól, hogy mit csinálnak
  • Feladatai:
    • Eljárások hatékony végrehajtása (programok, rutinok, szkriptek)
    • Nagyobb alkalmazások készítésének támogatása
  • Komponensek egy halmazaként viselkedik, amelyet a szoftverfejlesztők elérhetnek és használhatnak különböző API-kon keresztül
  • Megvalósítanak klaszterezés, failover és terheléselosztás funkciókat is

4 of 16

Alkalmazásszerver logikai tárolói

  • Servlet Konténer
    • Implementálja és kitölti a kérés és válasz objektumokat
    • Vezérli a servleteket, és életciklusukat
    • Biztonsági feladatokat lát el
  • JSP
    • Jakarta Server Pages (korábban JavaServer Pages)
    • Dinamikusan generált weboldalak generálása HTML, XML dokumentumtípus alapokon
    • Futásidőben servletté alakul
  • Enterprise JavaBeans
    • Enterprise JavaBeans: moduláris vállalati alkalmazásokban az üzleti logika megvalósításához használt szerveroldali komponensek
    • Az EJB-t arra hozták létre, hogy kezelje a perzisztenciát, a tranzakciók integritását és az adatvédelmet úgy, hogy a programozók szabadon koncentrálhassanak a megoldandó problémákra.
    • Működésükhöz egy EJB konténer szükséges

5 of 16

Kérések kiszolgálása

  • A kliens HTTP- kérést küld a webszervernek
  • A webszerver továbbítja a kérést a servlet container-nek.
  • A servlet container előkészíti a kérés (HttpServletRequest) és válasz (HttpServletResponse) objektumokat, majd meghívja annak a servletnek a megfelelő metódusát, amelyiknek a kérés szól.
  • A servlet a kérés paramétereitől és egyéb szempontoktól függően generál választ.
  • A servlet container kiüríti a válasz buffert és visszaadja a vezérlést a webszervernek.

6 of 16

Apache Tomcat

  • Alkalmazásszerver
  • Pehelysúlyú
  • Komponensei:
    • Catalina- Servlet konténer
    • Coyote- HTTP csatlakozó, bejövő kérésekre figyel, majd a Tomcat motornak továbbítja a kérést, és visszaküldi a választ a kliensnek
    • Jasper- JSP motor, JSP fájlok fordítása a feladata
  • Felépítése:
    • Bin- Script fájlok, startup.sh, shutdown.sh
    • Conf- XML, server.xml, tomcat-users.xml
    • Webapps- alkalmazások

7 of 16

Web ARchive

  • Zip fájl
  • .war kiterjesztés
  • Webalkalmazást tartalmaz
  • Készítése
    • Jar cvf … parancs segítségével
    • Maven segítségével
  • Ki lehet rakni alkalmazásszerverre

8 of 16

Webalkalmazás struktúra

  • Webapp
    • Elvárt könyvtár struktúra
    • Szabványosított helyek
    • WEB-INF
      • Classes
        • .class fájlok
        • Lefordított Servlet osztályok
        • Csomagstruktúra
      • Lib
        • .jar fájlok
        • Külső függőségek
  • Gyökér könyvtár
    • Statikus tartalom
    • Közvetlen elérés

9 of 16

Kitelepítés leírása

  • WEB-INF/web.xml
    • Webalkalmazás információ
    • Név
    • Leírás
    • Servlet definíció
    • URL mapping
    • Listeners
    • Szűrők (filterek)

<web-app xmlns="...">

<servlet>

<servlet-name>

greetings

</servlet-name>

<servlet-class>

org.dummy.Greetings

</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>

greetings

</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

10 of 16

Servlet definiálása

  • Servlet jelölőelemben
  • Name alapján azonosítva
  • Servlet-class az osztály elérése
  • Az init-param jelölőelem segítségével lehet paramétereket átadni neki
    • Param-name és param-value gyerekelemekkel
  • Servlet-mapping
    • Kulcs-érték pár
    • Az alkalmazás URL-jét terjeszti ki
    • * karakter megengedett

11 of 16

Szűrő / Filter

  • Metódusai:
    • init
    • doFilter
    • destroy
  • Előfeldolgozást végez, amely továbbít vagy elutasít
  • Példa feladatai: konverzió, logolás, adat tömörítés, titkosítás, bemenet validálás

12 of 16

Szűrő definiálása

  • Filter
    • Filter-name az azonosítója
    • Filter-class a szűrő osztály elérése
    • Hasonló a servletre
  • Filter-mapping
    • Filter-name alapján hivatkozunk a filterre
    • Hozzárendelése megadható
      • url-pattern segítségével
      • Servlet-name mely servlet előtt legyen
  • @WebFilter annotáció segítségével is létrehozható

13 of 16

HTTPServlet

  • Javax.servlet.http csomagban
  • Imlementálja a Servlet interfészt
  • A servlet kontérben fut
  • Metódusai:
    • doGet
    • doPost
    • doPut
    • doDelete
    • doHead
    • doTrace
  • A saját HTTP Servlet létrehozáskor ebből kell leszármaznia, és felül kell definiálni a metódusait

doGet(

HttpServletRequest req,

HttpServletResponse resp){

//do something

}

14 of 16

HTTPServlet beállítása annotációval

    • Van lehetőség a servletet annotációval is beállítani
    • Ekkor a @WebServlet annotáció van használva
    • Default paramétere a servlet mapping
    • Pl
      • @WebServlet(”/my”)
      • public class MyServlet extends javax.servlet.http.HttpServlet{
      • }
    • Több paraméter megadása:
      • @WebServlet(urlPatterns={”/my”,”/own”}, name = „MyOwnServlet”, initParams = {
      • @WebInitParam(name=”param”, value=”Hello”)})

15 of 16

HTTPServletRequest

  • http kérés információit tároló osztály
  • Le lehet kérdezni a
    • Cookie-kat
    • Session-t
    • Header-t
    • Paramétereket
    • queryString (GET)
    • Body (POST)
    • http metódus

16 of 16

HttpServletResponse

  • A szerver válaszát tárolja
  • Tartalmaz HTTP fejlécet
  • Cookie-kat
  • getWriter segítségével vissza tudunk küldeni adatot
  • setStatus segítségével a válasz HTTP kódját tudjuk beállítani
  • sendError segítségével hiba választ tudunk adni