Bevezető. Servlet alapgondolatok

Hasonló dokumentumok
Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit.

Web-fejlesztés NGM_IN002_1

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Java Servlet technológia

JEE tutorial. Zsíros Levente, 2012

JAVA webes alkalmazások

Webfejlesztés alapjai

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

A JavaServer Pages (JSP)

Java servlet technológia 1 / 40

Web-fejlesztés NGM_IN002_1

A JavaServer Pages (JSP)

A JavaServer Pages (JSP)

Java szervlet technológia

Java servlet technológia. Web alkalmazások. Servlet-et használni érdemes, ha. JSP-t használni érdemes, ha. Servlet-JSP kombináció (MVC) szükséges, ha

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

A Java EE 5 plattform

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Enterprise JavaBeans 1.4 platform (EJB 2.0)

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

COSC 2206 Internet Tools. Java Servlets

Szervlet-JSP együttműködés

Java Servletek alapjai

Web-fejlesztés NGM_IN002_1

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Menetkövetés lehetőségei

Osztályok. 4. gyakorlat

Webfejlesztés alapjai

Java I. A Java programozási nyelv

A. függelék Webalkalmazások

JavaServer Pages (JSP) (folytatás)

Java programozási nyelv 4. rész Osztályok II.

Symfony kurzus 2014/2015 I. félév. Controller, Routing

Abstract osztályok és interface-ek. 7-dik gyakorlat

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Programozási nyelvek Java

Interaktív weboldalak készítése

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Biztonság java web alkalmazásokban

OOP: Java 8.Gy: Abstract osztályok, interfészek

Földmérési és Távérzékelési Intézet

Számítógépes Hálózatok. 5. gyakorlat

Java grafikai lehetőségek

Web programoz as

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Alapfogalmak, WWW, HTTP

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

Bevezetés a Python programozási nyelvbe

API tervezése mobil környezetbe. gyakorlat

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Komponens alapú programozás Bevezetés

Java programozási nyelv /ősz 9. óra. Java Server Pages. JSP technika alapjai

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Struts2 keretrendszer

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Programozási nyelvek II.: JAVA

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

OOP #14 (referencia-elv)

Mobil Informatikai Rendszerek

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Ajax és Echo 2. Bokor Attila

Java és web programozás

Java és web programozás

Java Web technológiák

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Java és web programozás

Webes alkalmazások fejlesztése

Ja J v a a v a há h l á óz ó a z t a i al a ka k l a maz ma á z s á o s k o Socket, URL

MVC desktop alkalmazás esetén. MVC Model-View-Controller. eredete: Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

OOP és UML Áttekintés

Programozási nyelvek Java

Segédanyag: Java alkalmazások gyakorlat

CORBA bevezetés. Paller Gábor Internet és mobil rendszerek menedzselése

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Objektumorientált paradigma és programfejlesztés Bevezető

Bevezetés Működési elv AJAX keretrendszerek AJAX

Programozási nyelvek Java

Interaktív webes térképezés GRASS GIS 7-tel. A Web Processing Service bemutatása

Átírás:

A Java servlet technológia Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 06. Servlet Bevezető Igény a dinamikus WEB tartalmakra Előzmény: CGI Sokáig használt technológia Sok előny és széleskörű felhasználás ellenére sok hátrány Nem platform független Nincs egységes programozási nyelve (perl, python...) Servlet SERVLET / 2 Servlet alapgondolatok Szerver oldali funkciókat lát el, egy Webszerver funkcionalitásait bővíti ki Hordozható Egységes programozási nyelv (Java) Felhasználó központú tartalom (user-oriented) Objektum orientált programozás eszközeit használja Request response modellt használ, tehát kérések kiszolgálására szolgál Servlet SERVLET / 3

Servlet alapgondolatok Tetszőleges kérések kiszolgálására alkalmas, de leggyakrabban a technológia mint HTTP servlet kerül felhasználásra (HTTP kérések kiszolgálása) A továbbiakban a servlet kifejezés a HTTP servlet-et jelenti. Servlet SERVLET / 4 Mi a servlet? Speciális Java program nincs main, tehát önállóan nem használható nincs felhasználói felülete speciális futtató környezetet igényel (container) A container felelős a servlet példányosításáért és megszüntetéséért A servlet egy példányban létezik, de képes egyszerre több kérést kiszolgálni Servlet SERVLET / 5 Servlet container Kliens A Web server és a servlet container közötti API definiált (a container fejlesztőjének van szüksége rá) A container és a servlet közötti API definiált (a servlet fejlesztőjének van szüksége rá) A kliens szabványos HTTP kérést küld, és nem tud arról, hogy közvetlenül a szerver vagy egy servlet szolgálta ki. Servlet SERVLET / 6

Servlet osztályok lyok,, interface-ek ek Az interface -eket és osztályokat tartalmazó két csomag: javax.servlet javax.servlet.http Minden servlet osztálynak implementálnia kell a servlet interface -t (életciklust adja meg) HTTP szolgáltatások kiszolgálására a HTTPServlet interface -t kell implementálni (hasznos metódusok: doget(), dopost()) Servlet SERVLET / 7 Servlet osztályok lyok,, interface-ek ek A HTTP protokoll ismerete nem hátrányos a HTTP servletek megértéséhez. A servletekben az alap osztályok, saját osztályok stb. felhasználhatók. Servlet SERVLET / 8 Servlet életciklusa Ha a servlet példány még nem létezik a WEB container betölti a servlet osztályt példányosítja inicializálja a servletet annak az init() metódusával. Ha létezik akkor a service() metódust hívja meg (kérés válasz feldolgozás) Servlet SERVLET / 9

Servlet életciklusa Ha a containernek meg kell szüntetnie, vagy megszünteti a servletet, akkor annak a destroy() metódusát hívja meg. A fenti metódusok természetesen felüldefiniálhatók. Servlet SERVLET / 10 Servlet inicializáci ciója A WEB container a servlet osztály betöltése és a servlet példányosítása után meghívja a servlet init() metódusát A containertől függ, hogy hány példányt hoz létre a példányosítás a szerver indulása és az első, servletnek szóló kérés megérkezése között mikor történik Az viszont biztos, hogy az első kérés kiszolgálása előtt végrehajtódik az init() Servlet SERVLET / 11 Servlet inicializáci ciója A container az osztály betöltése után nem veszi észre, ha azt megváltoztattuk! (Fejlesztés...) Az init() felüldefiniálható Legtöbbször szükséges is a felüldefiniálás. Általában a servlet működéséhez szükséges erőforrások meglétének ellenőrzésére használatos Egy megkötés: Bármilyen hiba is lép fel az init() során, a UnavailableException kivétel kiváltásával kell a hibát jelezni Servlet SERVLET / 12

Kliens kérés k s kiszolgálása sa Ha a webszerver úgy találja, hogy egy hozzá befutó kérés egy servlet-re tartozik, meghívja annak service(servletrequest, ServletResponse) metódusát Az első paraméter a kliens kérésének részleteit tartalmazza Tartalmának feldolgozására a ServletRequest interface megfelelő metódusai szolgálnak. Servlet SERVLET / 13 Kliens kérés k s kiszolgálása sa A HTTP servlet a service metódust maga implementálja, és a megfelelő kéréseket "domethod" nevű szolgáltató metódusokhoz irányítja. A servlet fejlesztőjének a fenti metódusokat definiálva kell előállítania a választ. A második paraméterben kapja meg a kliens a választ (ez általában egy generált HTML oldal, amit a kliens meg tud jeleníteni). Servlet SERVLET / 14 Szolgáltat ltató metódusok domethod, ahol a Method lehet például: Get, Delete, Options, Put, Trace (többit lásd a Servlet interface leírásában) Válaszgenerálás menete (sorrend fontos): Stream foglalása a válasznak Header kitöltése Body kitöltés Elküldés Header kitöltését nem előzheti meg a Body kitöltése Servlet SERVLET / 15

Kérésfeldolgozás Minden kérés (request) implementálja a ServletRequest interface -t Ez az interface számtalan metódust tartalmaz, a tárolt információk kinyerésére Ez az információ lehet: Paraméter (lásd HTTP) Attribútum (információ a servlet és a container között) Információ a használt protokollokról localization information (karakterkódolás, nyelv stb.) Servlet SERVLET / 16 Kérésfeldolgozás s Kérés esetén a container kitölti a request objektumot, melyből a program(unk) információkat nyerhet ki. Servlet SERVLET / 17 Válaszgenerálás Válaszok (response) implementálják a ServletResponse interface -t Válasz objektum beállítása (content -et be kell állítani). Például: response.setcontenttype("text/html"); Szöveg küldésére egy PrintWriter objektum használható PrintWriter out = response.getwriter(); Servlet SERVLET / 18

Válaszgenerálás s Válasz megírása: out.println("<table>"); Adat (nem szöveg) küldésére a ServletOutputStream objektum biztosít lehetőséget (adat és text egyszerre nem küldhető, ha vegyesen akarjuk használni, akkor a text -et is adatként kell kezelni!) Servlet SERVLET / 19 doget / dopost public void doget (HttpServletRequest request, HttpServletResponse response) public void dopost (HttpServletRequest request, HttpServletResponse response) Az előbbi GET típusú HTTP kérésnél, az utóbbi POST típusú kérésnél hívódik meg. kérés / válasz objektumokat paraméterben kapja Servlet SERVLET / 20 HelloWorld példa /* * HTTPHello.java * * Created on June 21, 2002, 9:59 AM import javax.servlet.*; import javax.servlet.http.*; Servlet SERVLET / 21

HelloWorld példa public class HTTPHello extends HttpServlet { /** Initializes the servlet. public void init(servletconfig config) throws ServletException { super.init(config); /** Destroys the servlet. public void destroy() { Servlet SERVLET / 22 HelloWorld példa /** Processes requests for both HTTP <code>get</code> * and <code>post</code> methods. * @param request servlet request * @param response servlet response protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { response.setcontenttype("text/html"); java.io.printwriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>httphello</title>"); out.println("</head>"); out.println("<body>"); Servlet SERVLET / 23 HelloWorld példa //Make the font large out.println("<h1>"); //Make the font bold out.println("<b>"); out.println("hello from the HTTPHello Servlet"); out.println("</h1>"); out.println("</b>"); out.println("</body>"); out.println("</html>"); out.close(); Servlet SERVLET / 24

HelloWorld példa /** Handles the HTTP <code>get</code> method. * @param request servlet request * @param response servlet response protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); Servlet SERVLET / 25 HelloWorld példa /** Handles the HTTP <code>post</code> method. * @param request servlet request * @param response servlet response protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); Servlet SERVLET / 26 HelloWorld példa /** Returns a short description of the servlet. public String getservletinfo() { return "This is the HTTPHello Servlet"; Servlet SERVLET / 27

Servlet SERVLET / 28