Servlet
A Wikipédiából, a szabad enciklopédiából.
A servlet egy olyan Java objektum, amely HTTP kérést dolgoz fel és HTTP választ generált. Ezzel ugyanúgy a dinamikus tartalomgenerálás problémáját oldja meg, mint a PHP, a CGI és az ASP.NET. A generált tartalom jellemzően HTML, de lehet például XML is.
A servlet container a webszerver azon komponense, amely a servleteket kezeli. A container dolga a servletek életciklusainak a kezelése és az URL-ek hozzárendelése a servletekhez.
A javax.servlet
és javax.servlet.http
csomagokban specifikált Java Servlet API tartalmazza a servlet és a servlet container kommunikációjához szükséges osztályokat.
A servlet kódja megírható Java nyelven is, viszont generálható JavaServer Pages (JSP) oldalból is. A servlet illetve JSP forráskódot és a webalkalmazás többi részét jellemzően WAR fájlba csomagolják, ami nem más, mint egy ZIP fájl .war kiterjesztéssel. (A war itt nem a háborúra utal, hanem a web archive rövidítése.)
Tartalomjegyzék |
[szerkesztés] Verziótörténet
A servlet specifikáció 1.0 verzióját a Sun Microsystems készítette el és adta ki 1997 júniusában. A 2.3 verziótól kezdve a specifikációt a Java Community Process keretében fejlesztik. A JSR 53 dokumentum definiálja a Servlet 2.3 és a JSP 1.2 specifikációkat. A JSR 154 dokumentum tartalmazza a Servlet 2.4 és 2.5 specifikációkat.
James Gosling már a Java programozási nyelv kezdeteikor gondolt a servletekre, de a koncepció nem érett termékké addig, amíg a Sun ki nem adta a Java Web Server-t[1]. A később megjelent Java EE specifikációnak is a részévé vált a Servlet API.
Verzió | Kiadás dátuma | Platform | Fontosabb változások |
---|---|---|---|
Servlet 2.5 | 2005 Szeptember | JavaEE 5, J2SE 5.0 | Előfeltétele a J2SE 5.0, támogatja az annotációkat. |
Servlet 2.4 | 2003 November | J2EE 1.4, J2SE 1.3 | A web.xml fájl XML sémát használ. |
Servlet 2.3 | 2001 Augusztus | J2EE 1.3, J2SE 1.2 | Megjelennek a Filter -ek. |
Servlet 2.2 | 1999 Augusztus | J2EE 1.2, J2SE 1.2 | A J2EE részévé válik a Servlet API. Bevezetik a független, .war fájlokban tárolt webalkalmazásokat. |
Servlet 2.1 | 1998 November | specifikálatlan | Az első hivatalos specifikáció. Megjelennek a RequestDispatcher és a ServletContext objektumok. |
Servlet 2.0 | JDK 1.1 | A Java Servlet Development Kit 2.0 részeként. | |
Servlet 1.0 | 1997 Június |
[szerkesztés] A servlet életciklusa
A servlet életciklusa az alábbi fázisokból áll:
- A container példányosítja (létrehozza) a servlet objektumot.
- A container meghívja a servlet példány
init()
metódusát. Ez a metódus inicializálja a servletet és mindenképp le kell futnia mielőtt a servlet HTTP kéréseket tudna fogadni. Azinit()
metódus csak egyszer fut le a servlet élete során. - Az inicializációt követően a servlet képes a klienseket kiszolgálni. A container minden HTTP kérésre meghívja a servlet
service()
metódusát. Minden kérés külön szálban hajtódik végre. - A servlet életének záróakkordja az, amikor a container meghívja neki a
destroy()
metódusát. Azinit()
metódushoz hasonlóan adestroy()
is csak egyszer hajtódik végre a szerver életében.
[szerkesztés] ServletConfig és ServletContext
ServletContext csak egy van minden alkalmazásban. Ezt az objektumot minden servlet használhatja alkalmazásszintű információk és konténeradatok lekérdezésére. ServletConfig példány viszont minden servlethez külön létezik. Ez az objektum az egyes servletek inicializációjához szükséges paramétereket tartalmazza. A ServletContextet a ServletConfigon keresztül és a ServletRequesten keresztül is lekérdezdezheti a szoftverfejlesztő.
[szerkesztés] Servlet containerek
A servlet container egy olyan webszerver, ami támogatja a servletek futtatását. Képesnek kell lennie az alapvető webszerver funkcionalitásra, azaz tudnia kell HTTP kéréseket kezelni, továbbá kell bele egy java futtatási környezet (JRE), végül bírnia kell URL-eket servletmetódus hívásokká alakítani. A servletek telepítési módja a containerben sokféle lehet, a container implementációjától függ. Minden container esetében meg kell adni a telepítéskor az URL-t, ahol a servlet elérhető legyen. Az egyéb paraméterek containerfüggőek.
A servlet containereket szokták illetni web container vagy web engine kifejezésekkel is.
[szerkesztés] Lásd még
[szerkesztés] Külső hivatkozások
- Sun-féle servlet oktatóanyag angolul
- Sun-féle servlet leírás angolul
- JSR 154 (A Servlet 2.4 és 2.5 specifikációk.)
- JSR 53 (A Servlet 2.3 specifikáció.)
- A Servlet 2.3 API