Java és web programozás

Hasonló dokumentumok
Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

Java és web programozás

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

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

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat

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 és web programozás

Szoftvertechnológia alapjai Java előadások

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

Osztályok. 4. gyakorlat

Programozási nyelvek Java

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?

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

7. K: JAVA alapok Konzultáció

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

Objektumorientált programozás C# nyelven

Java Programozás 11. Ea: MVC modell

BME MOGI Gépészeti informatika 4.

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

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Kivételek. A program végrehajtása során ritkán bekövetkező események Nem a fő végrehajtási ág ; logikailag alacsonyabbrendű feladat jelzése

Programozási nyelvek Java

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

Kivételkezelés, naplózás. Exception handling, logging

Globális operátor overloading

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

Java programozási nyelv 6. rész Java a gyakorlatban

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

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

Java programozási nyelv 9. rész Kivételkezelés

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

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

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

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Web-technológia PHP-vel

Kivételek, kivételkezelés a C++ nyelvben

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

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

JAVA PROGRAMOZÁS 3.ELŐADÁS

Bánsághi Anna

Programozási technológia

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

3. Gyakorlat Ismerkedés a Java nyelvvel

JEE tutorial. Zsíros Levente, 2012

Objektumorientált programozás C# nyelven

Java és web programozás

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

JNDI - alapok. Java Naming and Directory Interface

JavaServer Pages (JSP) (folytatás)

BME MOGI Gépészeti informatika 8.

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

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

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

Pénzügyi algoritmusok

Osztályszintű elérés, kivételkezelés, fájlkezelés

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Java Servlet technológia

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

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

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Biztonság java web alkalmazásokban

Model View Controller alapú alkalmazásfejlesztés

Objektumorientált programozás C# nyelven III.

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

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Webes alkalmazások fejlesztése

és az instanceof operátor

Bevezető. Servlet alapgondolatok

Segédanyag: Java alkalmazások gyakorlat

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

Programozási nyelvek Java

Magas szintű programozási nyelvek 2 Előadás jegyzet

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Stateless Session Bean

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

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

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Java és web programozás

Programozás II. labor

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

ASP-s alkalmazás készítés

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

Programozás I. Első ZH segédlet

Szoftvertechnolo gia gyakorlat

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Szoftvertechnológia alapjai Java előadások

Concurrency in Swing

Access adatbázis elérése OLE DB-n keresztül

OOP: Java 1.Gy: Java alapok

OOP: Java 8.Gy: Gyakorlás

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Átírás:

Budapesti Műszaki Egyetem 2015. 04. 08.

9. Előadás

Kivétel kezelés a kivétel (exception) egy esemény, mely futás közben megbontja a program normális futási folyamatát például kivétel dobódik amikor 0-val osztunk a kivételeket lekezelhetjük, hogy ne a teljes program szálljon el tőle, ezt úgy szokták mondani, hogy elkapjuk (catch) a kivételt kivételeket elkapni try blokkokon belül tudunk, az ehhez tartozó catch blokk fut le ha megfelelő a paramétere megfelelő a paraméter, ha igaz, hogy az adott paraméter olyan tipusú mint amivel lehet a dobott kivételre hivatkozni

Kivétel kezelés a kivétel (exception) egy esemény, mely futás közben megbontja a program normális futási folyamatát például kivétel dobódik amikor 0-val osztunk a kivételeket lekezelhetjük, hogy ne a teljes program szálljon el tőle, ezt úgy szokták mondani, hogy elkapjuk (catch) a kivételt kivételeket elkapni try blokkokon belül tudunk, az ehhez tartozó catch blokk fut le ha megfelelő a paramétere megfelelő a paraméter, ha igaz, hogy az adott paraméter olyan tipusú mint amivel lehet a dobott kivételre hivatkozni minden kivétel az Exception osztályból örököl, így ezzel a paraméterrel minden kivételt elkaphatunk például amikor nullával való osztás törtenik a számológép programunkban, akkor félbehagyjuk a számolást kiírjuk, hogy hiba és várunk új parancsot a kivételeket mindig a legközelebbi megfelelő catch blokkban kezeli le, ha nincs ilyen blokk akkor elszáll a teljes program

Példa képzeljük el, hogy az alábbi osztályban a matematikai függvények jól meg vannak írva: public class Pelda { public static void szamol() throws Exception { double d = sqrt(5 * log(sin(6) + cos(4 / 0))); public static void main(string[] args) { try { szamol(); catch (Exception e) { System.out.println("elkapva"); amint láthatjátok, ha egy metódus továbbdobhat egy kivételt azt jeleznünk kell a throws kulcsszóval

Példa magyarázat a kivételt a nullával való osztás dobja ha a cos függvény lekezeli (a try blokkban van a számolás és a catch blokkja kompatibilis a kivétellel, akkor minden ok, ott le volt kezelve a kivétel) ha a cos nem kezeli le, akkor a kivétel tovább dobódik ekkor a lognak van esélye elkapni majd az sqrtnek a szamol függvénynek, de ennek láthatjuk is, hogy nincs try blokkja így automatikusan tovább dobódik és végül a main kezelheti le ha egy metódus továbbdobhat egy kivételt azt jeleznünk kell a throws kulcsszóval

Saját kivétel csinálhatunk saját kivétel osztályt, annyit kell csak tenni, hogy egy eleve létező kivételből kell örököltetni public class MyException extends Exception { public String messege; public MyException(String m) { messege = m;

Példa2 public class Pelda2 { public static void dobo() throws MyException { throw new MyException("uzenet"); public static void main(string[] args) { try { dobo(); catch (MyException me) { System.out.println(me.messege); Amint láthatjátok a throws paranccsal tudunk manuálisan kivételt dobni.

Példa2 magyarázat a MyException kivételnek van egy messege adattagja, így amikor elkapjuk elérhetjük ezt az adattagot egy catchen belül tovabb is dobhatjuk a kivételt a throw kulcsszóval: catch (MyException me) { if (me.messege.equals("nemitt")) { throw me ekkor viszont ne feledjük, hogy a mainnek meg kell mondani, hogy dobhat MyException kivételt public static void main(string[] args) throws MyException {...

Grizzly Szerver A Project Grizzly HTTP szerver keretrendszerét fogjuk érinteni. Dokumentácó és egyéb információk elérhetők a https://grizzly.java.net/ oldalon. Sokkal többre képes ez a rendszer, mint amennyit megmutatok.

Grizzly Szerver A Project Grizzly HTTP szerver keretrendszerét fogjuk érinteni. Dokumentácó és egyéb információk elérhetők a https://grizzly.java.net/ oldalon. Sokkal többre képes ez a rendszer, mint amennyit megmutatok. Könnyen átlátható, egyszerű módon működik. Minden oldalhoz egy HttpHandlert rendelünk majd hozzá, ami a kapott információk alapján eldönti, hogy milyen választ küldjön a felhasználónak (böngészőnek).

Üres példa HttpServer server = HttpServer.createSimpleServer(); try { server.start(); System.out.println("Press any key to stop the server"); System.in.read(); catch (Exception e) { System.err.println(e);

Üres példa HttpServer server = HttpServer.createSimpleServer(); try { server.start(); System.out.println("Press any key to stop the server"); System.in.read(); catch (Exception e) { System.err.println(e); Ebben a példában nem törtenik semmi, nem lesz semmi az oldalunkon, csak elindítjuk a webszervert. Feltételezzük, hogy ez a kód (és a továbbiak) valahol egy mainben vagy valami olyan helyen van ahol biztosan lefutnak.

Üres példa magyarázata A createsimpleserver metódus egy előre konfigurált szervert hoz létre. Ehelyett mást fogunk használni, hogy személyre szabottabb legyen. De a példa erejéig ez jó lesz. startal indítjuk a szervert. Ez a HttpServer mindent tartalmaz a webszerverünkkel kapcsolatban. Neki fogjuk megmondani, hogy melyik oldal mit es hogyan csináljon.

Töltelék... HttpServer server = HttpServer.createSimpleServer(); server.getserverconfiguration().addhttphandler( new HttpHandler() { public void service(request request, Response response) throws Exception { final String respstring = "Elso oldal"; response.setcontenttype("text/plain"); response.setcontentlength(respstring.length()); response.getwriter().write(respstring);, "/time"); try {... Ez az előző üres példa kiegészitve.

Töltelék magyarázata A server.getserverconfiguration().addhttphandler(...) parancssorral megadhatunk egy HttpHandler objektumot, aminek egy metódust kell igazán tartalmaznia, a service-t. A service kap egy Request és egy Response objektumot. A requestben vannak az információk amiket a böngésző küldött a webszerverünknek. Míg a responseba kell beleírnunk, hogy milyen választ akarunk neki küldeni. A setcontenttype-al tudjuk megmondani, hogy milyen tartalmat küldünk, jelen esetben nem htmlt, hanem egy egyszerű szöveget. A setcontentlengthel meg kell adnunk a küldött tartalom méretét. Végül a response.getwriter().write(respstring) parancssor beleírja a válaszba (response-ba) a kívánt szöveget. Legvégül, miután megadtuk a HttpHandlert, meg kell még adnunk, hogy hova kösse be ezt az oldalt, jelen esetben a /time címre.

Még egy kis magyarázat Tehát így működik a válasz oldal. Fogjuk a Response objektumot és feltöltjük tartalommal. A text/plain helyett a setcontenttype-be majd text/html-t fogunk írni amikor htmlt küldünk a böngészőnek. Sütiket is ilyen egyszerűen tudunk majd küldeni. A setcontentlengthel vigyázzunk, mert ha rosszul adjuk meg a méretet, akkor a megadott méretű részét küldi csak el az oldalnak, és ez html kód esetén elég végzetes lehet.

Request példa Tegyük fel, hogy a következő form található egy html oldalunkban: <form action="tovabb" method="get"> <label>user: <input type="text" name="username" value=""></label> <label>password: <input type="password" name="password"></label> <button type="submit">login</button> </form>

Request példa Tegyük fel, hogy a következő form található egy html oldalunkban: <form action="tovabb" method="get"> <label>user: <input type="text" name="username" value=""></label> <label>password: <input type="password" name="password"></label> <button type="submit">login</button> </form> Ez annyit tesz, hogy ha beírunk valamit az input mezőkbe, majd megnyomjuk a Login gombot, akkor ugrik a tovabb oldalra, amit a form action attribútumában adtunk meg. Valamint ezen az oldalon ahova ugrottunk láthatók lesznek a beírt adatok, valahogy igy: /tovabb?username=tofi&password=kutya

Request példa tovább Tehát a tovabb oldal megkapja az előző oldalba beírt adatokat. Így ha kapcsolunk egy HttpHandlert a tovabbhoz, akkor az ő request objektumában benne lesz ez a két paraméter. Ezeket a következő módon tudjuk lekérni: request.getparameter("parameterneve"); Itt a parameterneve az adott paraméter neve, jelen esetben a username és password, amiket az input name attribútumában adtunk meg. Tehát a mostani esetünkben ezt irhatnánk pl: String user = request.getparameter("username"); String pass = request.getparameter("password");

Még pár megjegyzés a requesthez A paraméterek értékét mindig Stringként kapjuk meg. Még akkor is ha számokat írtunk az adott mezőbe. Ha ugyanazzal a névvel két paraméter is van az oldalon, akkor a getparameter(...) a legelsőt kéri le. A request objektumon belül a paramétereken kívül rengeteg más dolog is van. Például az oldalunkhoz tartozó sütik is benne vannak. Valamint a böngésző adatai ami a kérést küldte. Le lehet kérni az összes paramétert a request.getparametermap() metódussal, mely egy Mapet ad vissza. Ebben a duplikált elemek is benne vannak. Lekérhetjük a teljes query Stringet (? utáni részt) a request.getquerystring() metódussal.