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

Hasonló dokumentumok
Bevezető. Servlet alapgondolatok

Java Servlet technológia

JEE tutorial. Zsíros Levente, 2012

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.

JavaServer Pages (JSP) (folytatás)

Java servlet technológia 1 / 40

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1

Adatbázisok webalkalmazásokban

Java szervlet technológia

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

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

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

Interaktív weboldalak készítése

JAVA webes alkalmazások

Webfejlesztés alapjai

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

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Biztonság java web alkalmazásokban

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

Java Servletek alapjai

Antal_Margit 2010/4/25 12:02 page 1 #1 ANTAL MARGIT JAVA ALAPÚ WEBTECHNOLÓGIÁK

Hálózati architektúrák és Protokollok GI Kocsis Gergely

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

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

A JavaServer Pages (JSP)

A. függelék Webalkalmazások

A JavaServer Pages (JSP)

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

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

Osztott rendszerek, Java EE. Általános bevezető

A JavaServer Pages (JSP)

Web programoz as

Java Web technológiák

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

Menetkövetés lehetőségei

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

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

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

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

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Alapfogalmak, WWW, HTTP

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

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

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

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

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?

Webes alkalmazások fejlesztése

Java és web programozás

MVC. Model View Controller

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

Ajax és Echo 2. Bokor Attila

Web-fejlesztés NGM_IN002_1

Web programozás. Internet vs. web. Internet: Az Internet nyújtotta néhány alapszolgáltatás:

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

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

JAVA SE/ME tanfolyam tematika

API tervezése mobil környezetbe. gyakorlat

Weboldalak fejlesztése mobil eszközökre

Az új be- és kimenet könyvtár

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Hálózati architektúrák és Protokollok MI 7,8. Kocsis Gergely

JAVA PROGRAMOZÁS 3.ELŐADÁS

COSC 2206 Internet Tools. Java Servlets

1. fejezet Bevezetés a web programozásába (Balássy György munkája) Az internet működése... 11

Collections. Összetett adatstruktúrák

Web-fejlesztés NGM_IN002_1

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Model View Controller alapú alkalmazásfejlesztés

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

Rohonczy János: World Wide Web - Világháló

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

JAVA PROGRAMOZÁS 8.ELŐADÁS

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

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

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Java Programozás 11. Ea: MVC modell

A Web réteg architektúrája A JSF web alkalmazás keretrendszer. Bakay Árpád dr. NETvisor kft (30)

Multimédia 2017/2018 II.

Programozási nyelvek Java

ZH mintapélda. Feladat. Felület

Java programozási nyelv

PHP. Adatbázisok gyakorlat

Struts2 keretrendszer

Elektronikus levelek. Az informatikai biztonság alapjai II.

A Http és a PHP kapcsolata. Web-Sky Consulting Kft Tóth Imre 2009

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

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

Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System

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

Hálózati architektúrák és Protokollok GI - 8. Kocsis Gergely

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

Java programozási nyelv 5. rész Osztályok III.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

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

Web-technológia PHP-vel

Átírás:

Sapientia - EMTE 2010

A célja A viselkedése

Megjelenítés komponenstípusok Adatok megjelenítése: grafikonok, táblázatok Űrlapok Navigációs elemek: menük, hiperlinkek Informácios képernyők: útbaigazítások, segítség, hibaüzenetek, dialógusdobozok

Esettanulmány - On-line tanfolyamok

Az analízis modell komponensei Boundary-Service-Entity HATÁR SZOLGÁLTATÁS BOUNDARY SERVICE EGYED ENTITY

Az analízis modell komponensei (2) Határ analízis kompenensek View - Controller - Vezérlési

View components Adat-megjelenítési : grafikonok, táblázatok... Adatbeviteli űrlapok Navigációs elemek: menük, hiperlinkek,... Információs képernyők: utasítások, segítség képernyők...

Az első webalkalamazás szerkezete index.html list-courses.html

list-courses.html <html> <head> <title>osszes tanfolyam </title> </head> <body> <H3>Osszes tanfolyam</h3> <ul> <li>j2se</li> <li>j2ee</li> <li>c++</li> </ul> </body> </html>

index.html <html> <H1>On line tanfolyamok</h1> <body> <ul> <H3>HALLGATO</H3> <ul> <li><a href="list-courses.html"> Osszes tanfolyam</a></li> <li>regisztracio</li> </ul> <H3>ADMINISZTRACIO<H3> <ul> <li>uj tanfolyam felvitele</li> </ul> </ul> </body> </html>

HTTP kliens-szerver architektúra

HTTP metódusok restclient.jar!!! HTTP metódus OPTIONS GET HEAD POST PUT DELETE Leírás A szerver által támogatott metódusok lekérdezése. Statikus erőforrás kérés az URL definiálásával. Ugyanaz mint a GET, de csak a fejlécét kéri le Hasonló a GET-hez, kivéve az üzenet testet. Jellemzően kulcs-érték párokat tartalmaz Fájlok feltöltése egy megadott URL-re a szerveren URL-el megadott erőforrás törlése a szerveren

HTTP GET metódus Minden egyes hiperlinkre való kattintáskor ez történik. Minden egyes média típusú fájlra is hasonló kérést küld a böngésző HTTP kérés: <HTTP metodus> <URL> <HTTP verzio> HTTP kérésre példa: GET /list-courses.html HTTP/1.0

HTTP kérés fejléc elemek Accept - A kliens (ügyfél) által elfogadható médiatípusokat(mime) adja meg Accept: image/gif, image/jpeg, text Accept-Language - Az ügyfél által elfogadott nyelvek fontossági sorrendben Host - A szerver nevét és a portszámot tartalmazza Referer - Annak az oldalnak a webcímét tartalmazza, ahonnan a kérés jött User-Agent - Információ a kliensszoftverről (böngésző, nyelv, op. rendszer)

HTTP válasz A válasz szerkezete: 1. Státusz sor 2. Fejléc sorok 3. Üres sor 4. Üzenet blokkja HTTP/1.0 200 OK Content-Type: text/html Date: Tue, 10 Apr. 2001 10:00:03 GMT Server: Apache Tomcat/4.0-bl <HTML>... </HTML>

HTTP válasz fejléc Content-Type: MIME típus Content-Length: A válasz hossza (bájtban) Server: A kiszolgáló típusa

architektúrája Felhasználói munkaállomás Böngészo HTTP kérés Web szerver Web konténer HTTP válasz <HTML> </HTML> Adatbázis

Szervletek A szervlet egy osztály, melynek feladata egy kérés kiszolgálása A szervlet impementálja a Servlet interfészt A szervlet életciklusát az a webkonténer kezeli, amelybe telepítve volt az illető szerver

A szervlet életciklusa Ha egy kérés érkezik a szervlethez: Ha a szervletnek még nem létezik példánya, akkor a webkonténer: betölti az osztályt, példányosítja majd inicializálja (init metódus hívása) Meghívja a service metódusát Ha a konténernek el kell távolítania a szervletet, meghívja a destroy metódusát FONTOS!!! Az init és a destroy csak egyszer hívódik meg A service annyiszor hívódik ahány kérés érkezik az adott szervlethez

A service metódus A service metódus 1. Két paramétere van: egy kérés és egy válasz objektum, amelyeket a webkonténer hoz létre 2. A kérés HttpServletRequest típusú 3. A válasz HttpServletResponse típusú

HttpServlet API <<interface>> ServletRequest <<interface>> HttpServletRequest getheader(name) getheaders(name) getheadernames():enum getintheader(name) getdateheader(name) <<interface>> Servlet service(req, resp) HttpServlet {abstract} service() doget() dopost() <<interface>> ServletResponse getwriter() getoutputstream() setcontenttype(mime) setcontentlength(int) <<interface>> HttpServletResponse setheader() setdateheader setintheader ListClassesServlet doget()

HttpServlet metódusok HTTP metódus OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT HttpServlet metódus dooptions() doget() dohead() dopost() doput() dodelete() dotrace() doconnect()

HttpServletRequest metódusok getheadernames(): az összes név lekérése getheader(): valamely névhez rendelt érték lekérése getintheader(): a névnek megfelelő érték átalakítása egész típusúvá getdateheader(): a névnek megfelelő érték átalakítása dátum típusúvá

Példa boolean xhtml= false; String user= request.getheader("user-agent"); if( user.startswith("mozilla/5.0")) xhtml = true;

HttpServletResponse metódusok setheader() setintheader() setdateheader() getouputstream(): bináris tartalom írása getwriter(): szöveges tartalom írása, pl. HTML

Példa response.setcontenttype("text/html"); response.setheader ("Cache-Control","no-cache");

Elkészítjük a Course osztályt Elkészítjük a ListCoursesServlet osztályt

Model: Course.java I package distedu.model; public class Course{ private String name; private String description; private double price; public Course(){ } public Course( String name, String description, double price){... } //get es set metodusok //minden attributumra public String tostring(){... } }

View: ListCoursesServlet.java I package distedu.view; import java.io.*; import java.net.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class ListCoursesServlet extends HttpServlet { private List<Course> courselist=null; private String[] coursenames = {...}; private double[] courseprices = {...}; protected void doget(

View: ListCoursesServlet.java II HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { courselist = new LinkedList<Course>(); //courselist feltoltese String pagetitle="distance Courses"; response.setcontenttype("text/html"); PrintWriter out=response.getwriter(); //HTML valasz out.println("<html>"); out.println("<head>"); out.println("<title>"+ pagetitle+"</title>"); out.println("</head>"); out.println("<body>");

View: ListCoursesServlet.java III } //Tablazat tartalma out.println("<ul>"); Iterator items=courselist.iterator(); while( items.hasnext()){ out.println( "<li> "+ items.next()+ "</li>"); } out.println("</ul>"); out.println("</body>"); out.println("</html>"); }...

Szervlet definíció: web.xml Szervlet definíció <servlet> <servlet-name> ListCoursesServlet </servlet-name> <servlet-class> distedu.view.listcoursesservlet </servlet-class> </servlet> Szervlet leképzés (mapping) <servlet-mapping> <servlet-name> ListCoursesServlet </servlet-name> <url-pattern> /list-courses.view </url-pattern> </servlet-mapping>

WAR (Web ARchive) fájlok Helyettesíti a kézi telepítést Egy JAR fájl, amely egy web alkalmazás struktúráját tartalmazza WAR létrehozása: jar cvf distedu.war distedu WAR kicsomagolása: jar xvf distedu.war

Szervlet aktiválása (1) I Felhasználó-böngésző: http://localhost:8080/distedu/ Webkonténer:index.html fájl <h3>distance Courses</h3> <ul> <li> <a href= list-courses.view > List all courses </a> </li> <li>register for a course</li> </ul>

Szervlet aktiválása (2) Kiválasztva a List all courses listapontot aktiválódik a szervlet: http://localhost:8080/distedu/list-courses.view Web szerver Web konténer View Model ListCourses Course

Összefoglalás A megjelenítési statikus tartalmat jeleníthetnek meg, illetve űrlap megjelenítésére is használhatók biztosítja a megjelenítés lekérését A webkonténer fogadja a HTTP kérést és aktiválja a megfelelő szervletet A szervelet a doget() metódus végrehajtásával válaszol a kérésre A kérésben található adatokat a webkonténer által biztosított request objektumtól lehet lekérni A megjelenítést úgy állítjuk elő, hogy a response objektumból kinyert kimeneti adatfolyamba adatokat írunk