A WEB programozása - Szervletek dr. Gál Tibor tavaszi félév

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "A WEB programozása - Szervletek dr. Gál Tibor tavaszi félév"

Átírás

1 SZERVLETEK Általános jellemzők A WEB kiszolgálók funkcionalitását bővítik Appletek az ügyfél oldali szervletek a kiszolgáló oldali Java alkalmazások A CGI programok alternatívái De nem külön processzként, hanem csak külön szálként futnak sokkal hatékonyabbak Java nyelv miatt hordozhatók (portabilitás) Egy ún. szervlet konténerben futnak, ami sok feladatot megold helyettük (kódolás-dekódolás, hitelesítés, titkosítás, stb.) Architektúra Protokoll-független (általános) szervletek a java.servlet.genericservlet osztályt bővítik HTTP szervletek a java.servlet.httpservlet osztályt bővítik Tipikusan csak a doget() és a dopost() metódusokat definiáljuk felül, bár a doput() és a dodelet() felüldefiniálása is néha szükséges A dohead(),dotrace() és dooptions() alapértelmezett implementációi szinte mindig megfelelőek 1

2 Életciklus Szervlet betöltése Adminisztrátori parancsra Felhasználó felöli kérelemre Egy-egy felhasználói kérelemre, egy-egy újabb szálon indul el a szervlet végrehajtása (közös erőforrásokhoz való hozzáférést szinkronizálni kell!) Ha nincs kiszolgálandó kérelem, akkor is a memóriában marad a szervlet A kiszolgáló csak akkor távolítja el a memóriából, ha Régóta nem használták és hely kell új betöltendő szervleteknek De újabb ügyfél kérelemre ismét betölti A szervlet betöltésekor meghívódik az init() metódusa Az inicializálás végrehajtása után az ügyfél kérelmeket a process() metódusban fogadja Minden ügyfél kérelemre egy új szálban a service() metódust hajtja végre. Ez fogadja az ügyfél kérelmeket és küldi el a válaszokat Több szál egyidejű végrehajtása miatt: szálbiztosan kell implementálni a service() metódust SingleThreadMode interfész implementálása: csak egyetlen szál futhat De több szervlet működhet, külső erőforrások szinkronizálása továbbra is szükséges - csak a példányváltozókat nem kell szinkronizálni A szervletek fejlesztése Két szükséges dolog: Servlet API a fordításhoz Szervlet futtatására alkalmas webkiszolgáló Legjobb ingyenes szervlet- és JSP-képes webkiszolgáló a Jakarta Tomcat Letölthető: címről Fordítás A javac fordítónak el kell érni a servlet-api.jar jsp-api.jar (ezeket csak a JSP használatakor) állományokat. Legegyszerűbb megoldás: a fentiek bemásolása a jdkjdk_home/jre/lib/ext könyvtárba a TOMCAT_HOME/common/lib könyvtárából Telepítés A legegyszerűbb esetben, csak.html állományok esetén egy jegyzetek nevű alkalmazás telepítése TOMCAT_HOME/webapps/jegyzetek TOMCAT_HOME/webapps/jegyzetek/WEB-INF/web.xml TOMCAT_HOME/webapps/jegyzetek/html1.html TOMCAT_HOME/webapps/jegyzetek/html2.html... TOMCAT_HOME/webapps/jegyzetek/htmln.html s a web.xml tartalma <?xml version="1.0" encoding="iso "?> <web-app> </web-app> A web.xml az ún. deployment descriptor (telepítési leíró) analóg a környezeti változókkal, de xml szintaxissal írja le az alkalmzás telepítéséhez és használatához szükséges információt 2

3 Ha szervleteket is használni akarunk, akkor járulékos könyvtár és járulékos bejegyzés szükséges a web.xml-ben A járulékos könyvtár a class fájlok elhelyezésére.../webapps/jegyzetek/web-inf/classes/class1.class....../webapps/jegyzetek/web-inf/classes/classn.class A járulékos bejegyzés a web.xml fájlban <servlet> <servlet-name>s1</servlet-name> <servlet-class>class1</servlet-class> </servlet>... <servlet> <servlet-name>sn</servlet-name> <servlet-class>classn</servlet-class> </servlet> <servlet-mapping> <servlet-name>s1</servlet-name> <url-pattern>/sv/serv1</url-pattern> </servlet-mapping>... <servlet-mapping> <servlet-name>sn</servlet-name> <url-pattern>/servn</url-pattern> </servlet-mapping> Hozzáférés aclass1.class szervlethez Megjegyzések A web.xml-ben a elemek sorrendje kötött! Az url-pattern elemben megadott elérési út az alkalmazás gyökerétől értendő, s az előző példában szereplősv mappa használata természetesen nem kötelező A class fájlok viszont mindig a classes könyvtárban, ill. annak a package struktúrát tükröző alkönyvtáraiban helyezendők el. Ha pl. a classi.class fájlban a package myclasses; szerepelt, akkor annak elhelyezése.../classes/myclasses/classi.class s a web.xml fájlban a <servlet-class> bejegyzés az alábbiak szerinti <servlet-class>myclasses.classi</servlet-class> A web.xml sok egyéb fontos információt tartalmazhat. Például egy adatbázis name/psw értékét nem célszerű beépíteni magába a szervletbe, sokkal jobb, ha azt a telepítési leíróból olvassuk be. Ennek megfelelően egy módosított <servlet> elem, s a paraméterek beolvasása <servlet> <servlet-name>servleta</servlet-name> <servlet-class>exampleservlet</servlet-class> <init-param> <param-name>dbuser</param-name> <param-value>annus</param-value> </init-param> <init-param> <param-name>dbpsw</param-name> <param-value>vizonto</param-value> </init-param> </servlet> //S a beolvasásuk a szervletben String username = getinitparameter("dbuser"); String userpsw = getinitparameter("dbpsw"); Tipikus feladatokat ellátó szervletek Ügyféltől független HTML oldal generálása public class ElsoSzervletem extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) // A válasz tartalom-típusának (MIME) beállítása res.setcontenttype("text/html"); // A HttpServletResponse osztály getwriter() metódusával egy // PrintWriter karakter csatorna létrehozása a ügyfél felé PrintWriter out = res.getwriter(); // A HTML oldal tartalmának elküldése az ügyfélhez a // létrehozott karakter csatornán keresztül "<HTML>"); "<HEAD><TITLE>Elso szervletem</title></head>"); "<BODY><BIG>Hello World</BIG></BODY></HTML>"); 3

4 Ügyféladattól függő HTML oldal generálása // Ürlapot tartalmazó weboldal, az elküldött adat alapján // kell generálni a HTML oldalt <HTML> <HEAD> <TITLE>Bemutatkozás</TITLE> </HEAD> <BODY> <FORM METHOD=GET ACTION="Hello"> <!-- <FORM METHOD=GET ACTION="/eloadasServlet/Hello"> --> Ha nem sértem meg, megkérdezhetném a nevét? <INPUT TYPE=TEXT NAME="KliensNeve"> <INPUT TYPE=SUBMIT VALUE="Elküldés"> </FORM> </BODY> </HTML> public class Hello extends HttpServlet { public void doget (HttpServletRequest req, HttpServletResponse res) res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); String nev = req.getparameter("kliensneve"); "<HTML><HEAD><TITLE>Üdvözölés</TITLE></HEAD>"); "<BODY>"); "Üdvözöllek " + nev + "!"); "</BODY></HTML>"); public String getservletinfo() { return "Szervlet, amely üdvözli azt az ügyfelet, aki hívta"; public void dopost(httpservletrequest req, HttpServletResponse res) doget(req,res); Fájlok használata értékelő rendszer <html> <head> <META http-equiv="content-type" content="text/html; charset=iso "> <script> function check_and_send() { var re = /^\s*[1-5]\s*$/; if(document.f.t1.value.match(re) == null) { alert('az első mező értéke nem 1-5 között van'); return; if(document.f.t2.value.match(re) == null) { alert('a második mező értéke nem 1-5 között van'); return; if(document.f.t3.value.match(re) == null) { alert('a harmadik mező értéke nem 1-5 között van'); return; document.f.submit(); </script> </head> <body> <center> <h2 style="background-color:red; color:white; font-weight:bold; width:300px"> Osztályozza az előadót!</h2> <p> <form name=f method=post action="/eloadasservlet/ertekeles"> <table> <tr><td>az előadó felkészültsége (1-tol 5-ig)</td> <td><input type=text name=t1 size=1></td></tr> <tr><td>az előadó tárgyi tudása (1-tol 5-ig)</td> <td><input type=text name=t2 size=1></td></tr> <tr><td>az előadás érthetosége (1-tol 5-ig)</td> <td><input type=text name=t3 size=1></td></tr> <tr colspan=2><td align=center> <input type=button value=elküldés size=30 onclick="check_and_send()"> <!--<input type=submit value=elküldés size=30 onclick="check_and_send(); return false;"> --> <input type=reset value=törlés></td></tr> </table> </form> </body> </html> 4

5 import java.util.*; public class ertekeles extends HttpServlet { public void dopost(httpservletrequest req, HttpServletResponse res) PrintWriter out = null; // Az urlapból elküldött adatok beolvasása a req // objektumból. // A t1 nevu szövegmezo értékének eloállítása String [] t1 = req.getparametervalues("t1"); // A t2 nevu szövegmezo értékének eloállítása String [] t2 = req.getparametervalues("t2"); // A t3 nevu szövegmezo értékének eloállítása String [] t3 = req.getparametervalues("t3"); // A beolvasott adatok beírás egy fájlba hozzáfuzéssel // sorvéggel ellátva // Egy ertekeles.txt nevu fájl megnyitása hozzáfuzésre String realfilepath = getservletcontext().getrealpath("data/ertekeles.txt"); FileOutputStream fos = new FileOutputStream(realFilePath, true); // t1, t2, t3 értékének hozzáfűzése fos.write((byte)(t1[0].charat(0))); fos.write((byte)(t2[0].charat(0))); fos.write((byte)(t3[0].charat(0))); // Újsor karakter hozzáfűzése, s a fájl lezárása fos.write((byte)'\n'); fos.close(); // a válsz fejléc tartalomtípus (content-type) beállítása res.setcontenttype("text/html"); // Referencia a válasz PrintWriter objektumára out = res.getwriter(); // HTML oldal generálása az ügyfél felé "<HTML><HEAD><TITLE>FormServlet output</title></head>"); "<BODY BGCOLOR=#FFFFFF><P>"); "<center><h2>köszönjük az értékelését.</h2></center>"); "Ha kiváncsi az eddigi értékelés átlagára, "); "akkor<a" + "href=\" + " kattintson ide.</a>"); "</BODY></HTML>"); // A writer lezárása; a válasz elküldve. out.flush(); out.close(); import java.util.*; public class ertekeles1 extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException { PrintWriter out = null; try { // A válasz fejléc tartalomtípus (content-type) beállítása res.setcontenttype("text/html"); // Referencia a PrintWriter objektumra out = res.getwriter(); // HTML oldal generálása és elküldése az ügyfélhez "<HTML><HEAD><meta http-equiv=\"content-type\"" + "content=\"text/html; charset=iso \">"); "<TITLE>FormServlet output</title></head>"); "<BODY BGCOLOR=#FFFFFF><P>"); "<center><h2 style=\"background-color:red; " + "color:white; font-weight:bold; width:300px\">" + "Az értékelés átlagolt eredménye</h2>"); // Adatok olvasása az ertekeles.txt fájlból, az átlagok szám. int x1=0; int x2=0; int x3=0; int n =0; try { String realfilepath = getservletcontext().getrealpath("data/ertekeles.txt"); FileReader fr = new FileReader(realFilepath); BufferedReader br = new BufferedReader(fr); String s; while((s=br.readline())!=null) { n++; int x = Integer.valueOf(s).intValue(); x1 += x/100; x2 += (x-(x/100)*100)/10; x3 += (x%100)%10; fr.close(); catch (IOException e) {e); "<table bgcolor=black>"); "<tr><td><font color=white><b>az előadó " + "felkészültésge</font></td><td>" + "<font color=yellow><b>" + (float)x1/n +"</td></tr>"); "<tr><td><font color=white><b>az előadó tárgyi " + "tudása</font></td><td><font color=yellow><b>" + (float)x2/n +"</td></tr>"); 5

6 "<tr><td><font color=white><b>az előadás " + "érthetosége</font></td><td><font color=yellow><b>" + (float)x1/n +"</td></tr>"); "<tr><td><font color=white>" + <b>a szavazatok " + "száma</font></td><td>" + <font color=yellow><b>" + n +"</td></tr></table></center>"); catch(exception e) { e.printstacktrace(); e); "</BODY></HTML>"); // A Writer lezárása, a válasz elküldve. out.flush(); out.close(); Adatbázisok használata Egyetlen eltérés a közönséges Java alkalmazásokhoz: hol kell elhelyezeni az adott adatbázis meghajtó programjait? Közönséges Java alkalmazás A meghajtó programok a classpath-ban, vagy Pl. az Oracle esetén a clases12.zip-et az alkalmazással azonos könyvtárba téve: Java cp.;classes12.zip DBKezeloProgram Szervlet esetén Nem archiv fájlok (.class) esetén a class fájlok helye../alkalmazas/web-inf/classes/ Archiv fájlok (.jar vagy.zip) esetén../alklamazas/web-inf/lib/ Vagy Tomcat_Home/common/lib/ ODBC esetén a szükséges sun.jdbc.odbc.jdbcodbcdriver a szabvány könyvtárból elérhető Példa: táblázat letöltése a böngészőbe Adott adatbázisból adott táblázat rekordjainak olvasása és HTML táblázat formájú megjelenítése az ügyfél böngészőjében Hozzáférés ODBC DSN-t használva Görgethető kialakítású táblázat megjelenítés Táblázat fejléce és tartalma két külön táblázatban A tartalom táblázatot DIV elemben elhelyezve, a görgethetőséget az overflow=auto jellemzővel állítjuk be Ha a táblázat mérete meghaladja a specifikált méretet, akkor automatikusan görgethető rétegű megjelenítésbe vált át a rendszer import java.sql.*; public class DBServlet0 extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse resp) Példa: táblázat letöltése a böngészőbe (1. folytatás) // Adatbázis meghajtó ODBC esetén String driver = "sun.jdbc.odbc.jdbcodbcdriver"; // Adatbázis meghajtók Oracle, Sybase és mysql esetén // String driver = "oracle.jdbc.driver.oracledriver"; // String driver = "com.sybase.jdbc.sybdriver"; // String driver = "com.mysql.jdbc.driver"; // Adatbázis URL ODBC DNS esetén String url = "jdbc:odbc:tanszek"; // Adatbázis URL Oracle esetén // String url = "jdbc:oracle:thin:@host:port:dbname"; // Adatbázis URL Sybase esetén // String url = // "jdbc:sybase:tds:@host:port:?servicename=dbname"; // Adatbázis URL mysql esetén // String url = "jdbc:mysql://host/dbname"; // Az adatbázishoz elküldendo sql utasítás String query = "SELECT * FROM munkatarsak ORDER BY Név"; 6

7 Példa: táblázat letöltése a böngészőbe (2. folytatás) try { // Az adatbázis meghajtó betöltése Class.forName(driver); // A kapcsolat létrehozása az adatbázissal // DriverManager.getConnection(url,"db_login","db_jelszo" ); Connection con = DriverManager.getConnection(url,"",""); // Az utasításobjektum létrehozása Statement stmt = con.createstatement(); // Az sql utasítás végrehajtása, a visszakapott érték // egy eredménykészlet (absztrakt táblázat) ResultSet rs = stmt.executequery(query); // Az eredmény megjelenítése az ügyfél böngészojében printresultset(resp,rs); // Az eredménykészlet-, utasítás- és kapcsolati obj. lezárása rs.close(); stmt.close(); con.close(); // end try Példa: táblázat letöltése a böngészőbe (3. folytatás) catch (SQLException ex) { // Az adatbázissal való kapcsolat során fellépő hiba // elküldése az ügyfél böngészőjébe // PrintWriter kimeneti csatorna megnyitása az ügyfél felé PrintWriter out = resp.getwriter(); // Tartalomtípus (MIME típus) beállítása a válasz fejlécben resp.setcontenttype("text/html"); while (ex!= null) { // A fellépett hibák leírásának elküldése out.println ("SQL Exception: " + ex.getmessage()); ex = ex.getnextexception(); // end while // end catch SQLException catch (java.lang.exception ex) { PrintWriter out = resp.getwriter(); resp.setcontenttype("text/html"); // Egyéb, nem az adatbázis kommunikációs hiba elküldése // az ügyfél böngészőjébe out.println ("Exception: " + ex.getmessage ()); // end doget Példa: táblázat letöltése a böngészőbe (4. folytatás) // Az eredmények megjelenítése az ügyfél böngészojében private void printresultset(httpservletresponse resp, ResultSet rs)throws SQLException { try { // PrintWriter típusú kimeneti csatorna megnyitása PrintWriter out = resp.getwriter(); // A weboldalt statikus elemeinek generálása az ügyfél // böngészőjében "<html>"); "<head><title>dbservlet</title>"); "<style type=text/css>"); "td {width:200;font-size:14pt;font-family:helvetica"); "</style></head>"); "<body>"); "<table border=1 style='width:600;" + "background-color:black'>"); "<caption><h2>munkatársak adatai</h2></caption>"); "<tr style='color:white; font-weight:bold;'>"); Példa: táblázat letöltése a böngészőbe (5. folytatás) // A metaadatokat tartalmazó objektum létrehozása a // visszakapott táblázat oszlopneveinek és az oszlopok // számának megállapítására ResultSetMetaData rsmd = rs.getmetadata(); // Az oszlopok számának meghatározása int numcols = rsmd.getcolumncount (); // Az oszlopok neveinek generálása az első táblázatban for(int i=1; i<=numcols; i++) out.print("<td>" + rsmd.getcolumnname(i) + "</td>" ); "</tr>"); "</table>"); // A div elem létrehozása fix mérettel és overflow=auto // tulajdonsággal "<div style='overflow:auto; width:616;" + "height: 160px;'>"); 7

8 Példa: táblázat letöltése a böngészőbe (6. folytatás) // A második táblázat létrehozása "<table border=1 style='background-color:#c0c0c0'>"); // A táblázat sorainak generálása az adatbázisból // visszakapott eredménykészlet alapján while ( rs.next() ) { "<tr>"); for (int i=1; i<=numcols; i++) { out.print("<td>" + rs.getstring(i) + "</td>" ); // end for "</tr>"); // end while "</table>"); "</div>"); "</body>"); "</html>"); out.close(); // end try catch ( IOException except) { // end catch // end printresultset // end DBServlet0 Példa: Kétirányú kommunikáció az adatbázissal és az ügyféllel A letöltött táblázat alatt jelenítsünk meg egy újabb táblázatot Annak egy sora három szövegmezőt tartalmazzon Az ide beírt új rekord kerüljön el az adatbázisba Azonos Nev mező esetén csak módosuljon a rekord A kiolvasott táblázat megjelentetéséig a megoldás azonos az előbbivel, ezért csak a hátralévő rész: Import java.io.*; //... //... // Űrlap generálása az ügyfél böngészőjében "<form metdod='get' action='/eloadasservlet/dbservlet2'>"); Példa: Kétirányú kommunikáció az adatbázissal és az ügyféllel (folyt.) // Az űrlapon belül egy táblázat generálása "<table border=1 style='width:600;'>"); // A tábázat egy sorában numcols darab szövegmező elem gene- // rálása, a name tulajdonságnak cella1,... neveket adva "<tr>"); for (int i=1; i<=numcols; i++) { out.print("<td><input type=text value='' name=cella" + i + " style='width:100%'></td>"); // end for "</tr>"); // numcols oszlopot átfogó Submit nyomógomb generálása out.print("<tr><td colspan="+ numcols + " style='width:100%'>" + "<input type='submit' style='width:100%'></td>"); "</tr>"); "</table>"); "</form>"); "</body>"); "</html>"); out.close(); // end try catch ( IOException except) { // end catch // end printresultset // end DBServlet1 Példa: Kétirányú komm. (DBServlet2) import java.sql.*; public class DBServlet2 extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse resp) String driver = "sun.jdbc.odbc.jdbcodbcdriver"; String url = "jdbc:odbc:tanszek"; try { Class.forName(driver); Connection con = DriverManager.getConnection(url,"",""); Statement stmt = con.createstatement(); // A táblázat beolvasása annak eldöntésére, hogy // insert vagy update sql utasítást kell-e végrehajtani String query = "SELECT * FROM munkatarsak"; ResultSet rs = stmt.executequery(query); 8

9 Példa: Kétirányú komm. (DBServlet2) (1. folytatás) ResultSetMetaData rsmd = rs.getmetadata(); int numcols = rsmd.getcolumncount (); boolean newrecord=true; String Név = req.getparameter("cella1"); String Beosztás = req.getparameter("cella2"); String Életkor = req.getparameter("cella3"); while ( rs.next() ) { if(rs.getstring(1).equals(név)){ newrecord=false; break; rs.close(); stmt.close(); stmt = con.createstatement(); String sql=null; if(newrecord){ // A megadott nevu személy nem szerepel az // adatbázisban, így insert utasítást kell végrehajtani sql = "insert into munkatarsak (Név,Beosztás,Életkor)" + " values('"+név+"','"+beosztás+"','"+életkor+"')"; else{ Példa: Kétirányú komm. (DBServlet2) (2. folytatás) // A megadott nevu személy szerepel az // adatbázisban, így update utasítást kell végrehajtani sql = "update munkatarsak set Beosztás='" + Beosztás + "', Életkor='" + Életkor + "' where Név='" + Név +"'"; stmt.executeupdate(sql); stmt.close(); con.close(); // end try catch (SQLException ex) { PrintWriter out = resp.getwriter(); resp.setcontenttype("text/html"); while (ex!= null) { out.println ("SQL Exception: " + ex.getmessage ()); ex = ex.getnextexception (); // end while // end catch SQLException catch (java.lang.exception ex) { PrintWriter out = resp.getwriter(); resp.setcontenttype("text/html"); out.println ("Exception: " + ex.getmessage ()); Példa: Kétirányú komm. (DBServlet2) (3. folytatás) // Az adatbázis műveletek végrehajtása befejeződött, // a végrehajtás átirányítása a DBServlet1 szervletre // (a magyarázatot lásd a fejezet végén) RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher("/dbservlet1"); dispatcher.forward(req,resp); // end doget // end DBServlet2 Munkafolyamatok (session) kezelése Bizonyos idő alatt azonos felhasználótól érkező kérelmek Oldalak között navigáló felhasználó bizonyos adataira szükség lehet az elhagyott weboldalak kontextusából (online áruház: kosár tartalmának megtartása az oldalak közötti navigálás alatt) HTTP állapotmentes, ezért nem lehet a protokollra támaszkodva megoldani. Három megoldás: Sütik URL átírás Rejtett mezők használata Sütik: az ügyfél gépén tárolható információ. Felhasználható a munkafolyamat állapotváltozóinak tárolására. De nem mindig jó, mert ki lehet kapcsolni a sütiket. URL átírás: minden ugrást kiváltható URL-hez hozzácsatolunk valamilyen adatot, pl.: tetemes munkával járhat (dinamikus URL, pl.location.href is kiegészítendő, de mindig használható) Rejtett mező elhelyezése, amelynek tartalma is elküldődik: <input type="hidden" name="session" value="123456"> 9

10 A szervletek hatékonyan támogatják a munkafolyamatok kezelését HttpSession objektum: a munkafolyamat valamennyi szervletje számára hozzáférhető adatokat tárolja. Referencia a session objektumra HttpSession session = request.getsessin(true); A true argumentum miatt automatikusan létrehozza, ha nem létezett. Hozzáférés a session objektumhoz: public void setattribute(string kulcsnev, Object value) public Object getattribute(string kulcsnev) Néhány további metódus public void removeattribute(string kulcsnev) public Strin[] getattributenames() public String getid() public Boolean isnew() public long getcreationtime() public long getlastaccessedtime() public int getmaxinactiveintervall() public void setmaxinactiveinterval(int seconds) public void invalidate() Az ügyfélnek elküldendő URL-ek kódolása a HttpServletResponse objektum encodeurl metódusával. Például: String eredetiurl = valamirelativvagyabszoluturl; String kodolturl = response.encodeurl(eredetiurl); "<a href=\"" + kodolturl + "\>...</a>"); Példa egy munkafoyamatra Belépés a munkafolyamatba: Itt a felhasználó megadja a nevét, s a Submit hatására áttér az s1 szevletre <h2>munkafolyamat tesztelése</h2> <p>adja meg egy nevet. Az s1 szervlet ezt egy munkafolyamat-váltzóban tárolja, s ezután a munkafolyamat többi szervletei, az s2, s3 és s4 is hozzá tudnak majd ehhez férni. </p> <form method=get action="/eloadasservlet/s1"> Adja meg a nevét: <input type=text name=nnn> <input type=submit> </form> Az s1 szervlet import java.util.*; public class s1 extends HttpServlet { public void doget( HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { HttpSession session; if(request.getsession(false) == null){ session = request.getsession(true); String nev = request.getparameter("nnn"); session.setattribute("felhasznaloneve", nev); Vector v = new Vector(); session.setattribute("kerelmek", v); session = request.getsession(true); Vector kerelmek = (Vector)session.getAttribute("kerelmek"); kerelmek.addelement(request.getrequesturi()); session.setattribute("kerelmek",kerelmek); Az s1 szervlet (1. folytatás) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); "<html><head><meta http-equiv='content-type'" + " content='type=text/html;charset=iso '></head>" + "<body>" + "<h2>üdvözlöm kedves</h2>" + (String)session.getAttribute("felhasznaloNeve") + "<br>a munkafolyamat elso lapján" + "<p>" + "Az Ön által eddig meglátogatott oldalak<br>"); for(int i=0; i<kerelmek.size(); i++){ (String)kerelmek.elementAt(i) + "<br>"); String s2encoded = response.encodeurl("/eloadasservlet/s2"); String s3encoded = response.encodeurl("/eloadasservlet/s3"); String s4encoded = response.encodeurl("/eloadasservlet/s4"); 10

11 Az s1 szervlet (2. folytatás) "<p>ha az alábbi linkek egyikére kattint, akkor eljuthat" + "a munkafolyamat egy másik lapjára" + "<br><a href='" + s2encoded + "'>" + + "Munkafolyamat 2. lapjára</a>" + "<br><a href='" + s3encoded + "'>" + "Munkafolyamat 3. lapjára</a>" + + "<br><a href='" + s4encoded + "'>" + "Munkafolyamat 4. lapjára</a>" + "<p>ennek a munkafolyamatnak a kiszolgáló a következo" + " sessionid értéket adta:<br> sessionid= " + session.getid() + "</body></html>"); public void dopost(httpservletrequest req, HttpServletResponse res) doget(req,res); A többi szervlet Eltérés az s1-től: - Nem kell vizsgálni, hogy a munkafolyamat létre van-e hozva - Nem kell a munkafolyamatba beírni a nevet - A linkek között a saját URL-jük helyett az s1 URL-jét szerepeltetik Például s2 import java.util.*; public class s2 extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException,IOException { HttpSession session = request.getsession(true); Vector kerelmek = (Vector)session.getAttribute("kerelmek"); kerelmek.addelement(request.getrequesturi()); session.setattribute("kerelmek",kerelmek); s2 (1.folytatás) s2 (2.folytatás) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); "<html><head><meta http-equiv='content-type'" + " content='type=text/html;charset=iso '></head>" + "<body>" + "<h2>üdvözlöm kedves</h2>" + (String)session.getAttribute("felhasznaloNeve") + "<br>a munkafolyamat második lapján" + "<p>" + "Az Ön által eddig meglátogatott oldalak<br>"); for(int i=0; i<kerelmek.size(); i++){ (String)kerelmek.elementAt(i) + "<br>"); String s1encoded = response.encodeurl("/servlet/s1"); String s3encoded = response.encodeurl("/servlet/s3"); String s4encoded = response.encodeurl("/servlet/s4"); "<p>ha az alábbi likek egyikére kattint, akkor eljuthat" + "a munkafolyamat egy másik lapjára" + "<br><a href='" + s1encoded + "'>Munkafolyamat 1. lapjára</a>" + "<br><a href='" + s3encoded + "'>Munkafolyamat 3. lapjára</a>" + "<br><a href='" + s4encoded + "'>Munkafolyamat 4. lapjára</a>" + "<p>ennek a munkafolyamatnak a kiszolgáló a következo" + " sessionid értéket adta:<br> sessionid= " + session.getid() + "</body></html>"); public void dopost(httpservletrequest req, HttpServletResponse res) doget(req,res); Másik példa 11

12 Egyéb tipikus feladatok HTTP fejlécek Az ügyfél felől érkező HTTP protokoll fejléc olvasása request.getheader("fejlecneve"); // például reguest.getheader("host"); // vagy reguest.getheader("host"); // a fejléc neve nem érzékeny a kis/nagybetűre Több fejlécnévre direkt metódus is használható public String getmethod() public String getprotocol() public int getcontentlength() public String getcontenttype() public Cookie[] getcookies() public Enumeration getheadernames() public Enumeration getheaders() Az első fejléc elemei (method, requesturi, protocol) csak direkt metódussal olvashatók (getmethod(), getrequesturi(), getprotocol())! Példa: Három fejléc beolvasása és megjelenítése a böngészőben táblázatos formában public class ReqHeaders extends HttpServlet { public void doget (HttpServletRequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); "<html><h2>a kérelem fejlécek megjelnítése " + "egy weboldalon</h2>"); "Kérelem parancs: " + request.getmethod() + "<br>" + "Kérelem URI: " + request.getrequesturi() + "<br>" + "Kérelem protokoll: " + request.getprotocol() + "<p>"); "<table border=1>" + "<tr><th>fejléc neve</th><th>fejléc értéke</th></tr>"); Enumeration headernames = request.getheadernames(); while(headernames.hasmoreelements()) { String headername = (String)headerNames.nextElement(); "<tr><td>" + headername + "</td>"); "<td>"+request.getheader(headername)+"</td></tr>"); "</table></html>"); out.close(); Válasz fejlécek A webkiszolgáló tipikus válasza kötött sorrendben az alábbiakból áll - státuszsor - fejlécek - üres sor - tartalom például HTTP/ OK Content-Type: text/html <html> Hello Uraim! </html> Akár a státuszkódot, akár a fejléceket is generálhatjuk a szervlettel, de feltétlenül a tartalom generálása előtt! A státusz beállítása public void setstatus(int statuskod) Fejlécek beállítása public void setheader(string fejlecnev, String fejlecertek) Fájlból betölthető kép elküldése az ügyfél böngészőjébe: - a szervlet a háttértárból olvassa be a képet, - meghatározza annak típusát, - ez alapján beállítja a fejlécet, - s végül elküldi a képet import java.util.*; public class sendimage extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse responsw) throws IOException { // A kép abszolút elérési útjának meghatározása ServletContext sc = getservletcontext(); String filename = sc.getrealpath( "WEB-INF/classes/kep1.jpg"); 12

13 Fájlból betölthető kép elküldése az ügyfél böngészőjébe (folytatás) // A kép MIME típusának meghatátozása String mimetype = sc.getmimetype(filename); if (mimetype == null) { sc.log("a "+filename + " MIME típusát nem lehetett meghatározni"); response.setstatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; // A tartalomtípus beállítása response.setcontenttype(mimetype); // A méret beállítása File file = new File(filename); response.setcontentlength((int)file.length()); // A fájl és a kimeneti csatorna megnyitása FileInputStream in = new FileInputStream(file); OutputStream out = response.getoutputstream(); // A fájl átmásolása a kimeneti csatornára byte[] buf = new byte[1024]; int count = 0; while ((count = in.read(buf)) >= 0){out.write(buf, 0, count); in.close(); out.close(); Kép generálása és elküldése az ügyfél böngészőjébe: import java.awt.*; import java.awt.image.*; import com.sun.image.codec.jpeg.*; public class ImageServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("image/jpeg"); // Kép létrehozása int width = 200; int height = 200; BufferedImage image = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB); // Grafikus kontextus elkérése Graphics2D g = (Graphics2D)image.getGraphics(); Kép generálása és elküldése az ügyfél böngészőjébe (folyt.) // Háttér kitöltése g.setcolor(color.yellow); g.fillrect(0, 0, width, height); // Szöveg rajzolása g.setcolor(color.black); g.setfont(new Font("Dialog", Font.BOLD, 20)); g.drawstring("kép generálása",width/2-70,50); // Kör rajzolása g.setcolor(color.black); g.drawoval(width/2-60, 70, 100, 100); // Dispose context g.dispose(); Konkurens hozzáférés megakadályozása //Ez a szervlet egyidejűleg csak egyetlen kérelmet kezel public class MyServlet extends HttpServlet implements SingleThreadModel {... De a szervlet konténer több szervlet példányt is létrehozhat, ezért - bár a szervlet példányváltozóit nem kell szinkronizálni - de a külső erőforrásokat igen! // Kép generálása a válaszba ServletOutputStream sos = response.getoutputstream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos); encoder.encode(image); 13

14 Szervletek együttműködése Kommunikáció a futtató környezettel a szervletservletcontext objektumán keresztül public void setattribute(string key, Object obj) public Object getattribute(string key) public Enumeration getattribitenames() public void removeattribute(string key) // A key a tulajdonság minősített neve pl. com.foo.fooservlet.fooservlet // esetén com.foo.fooservlet.fooservlet.kulcs1 // lehet Végleges átirányítás kérelem átirányítása egy másik erőforráshoz (szervlethez, HTML vagy JSP oldalhoz) De ha az kiinduló szervlet már hozzáfért a ServletOutputStream vagy PrintWriter objektumhoz, akkor IllegalStateException lép fel! Tehát csak az egyik - célszerűen - a meghívott írhat a kliens felé. Összetett feladatok esetén célszerű különválasztani az adatfeldolgozó és a weboldal generáló részt. Az előbbit szervlettel, az utóbbit JSP-vel célszerű megoldani. Ennek váza: ServletContext sc = getservletcontext(); RequestDispatcher dispatcher = sc.getrequestdispatcher("/célerőforrás_azonos_kontextusban"); Referencia egy másik szervletservletcontext objektumása public ServletContext getcontext(string localuri) dispatcher.forward(req,res); További példa public void doget(httpservletrequest req, HttpServletResponse res) // Adatfeldolgozást elvégző rész... Átirányítás valamilyen // feltétel szerint kiválasztandó JSP oldalra String operation = reg.getparameter("operation"); if(operation == null) { operation = "ismeretlen"; if(operation.equals("operation1")) { gotopage("/operations/presentation1.jps", req, res); else if(operation.equals("operation2")) { gotopage("/operations/presentation1.jps", req, res); else { gotopage("/operations/unknownrequesthandler.jps", req, res); Ideiglenes átirányítás Ilyenkor a célszervlet tartalma beszúródik a hívás helyén A hívó és a hívott egyaránt küldhet adatokat, de a hívott a fejlécet nem módosíthatja, s ne zárja le a kimeneti csatornát. A RequestDispatcher objektum forward() metódusa helyett az include() metódust kell használni private void gotopage(string address, HttpServletRequest req, HttpServletResponse res) RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(address); dispatcher.forward(req, res); 14

JavaServer Pages (JSP) (folytatás)

JavaServer Pages (JSP) (folytatás) JavaServer Pages (JSP) (folytatás) MVC architektúra a Java kiszolgálón Ügyfél (Böngésző) 5 View elküldi az oldal az ügyfélez View (JSP) Ügyfél üzenet küldése a vezérlőnek 1 3 4 Kérelem továbbítása a megjelenítőnek

Részletesebben

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

A WEB programozása - JSP1 dr.gál Tibor. 2010. őszi félév Általános jellemzők JavaServer Pages (JSP) Java utasításokat helyezetünk el a HTML lapon Ezket a Java utasításokat a kiszolgáló végrehajtja Az ügyfél felé generált tartalom: statikus HTML kód + Java utasítások

Részletesebben

Java Servlet technológia

Java Servlet technológia Java Servlet technológia Servlet Java osztály, megvalósítja a Servlet interfészt Kérés-válasz (request-response) modellre épül, leginkább web-kérések kiszolgálására használjuk A Servlet technológia http-specifikus

Részletesebben

Bevezető. Servlet alapgondolatok

Bevezető. Servlet alapgondolatok 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

Részletesebben

JEE tutorial. Zsíros Levente, 2012

JEE tutorial. Zsíros Levente, 2012 JEE tutorial Zsíros Levente, 2012 A J2EE részei Webkonténer Szervletek JSP oldalak EJB (Enterprise Java Bean) konténer Session Bean Entity Bean (Java Persistence API-t használják) A Glassfish és JBoss

Részletesebben

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.

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. 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. Hozzunk létre egy Dynamic Web projectet File New Other itt a következőket

Részletesebben

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

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit. 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,

Részletesebben

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

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL ) Célok: a Java DB adatbázis-kezelő rendszer használatának ismertetése, adatbázisok használata Java alkalmazásokban - kétrétegű architektúra, egyszerű kliens-szerver architektúra használata hálózati alkalmazásokhoz.

Részletesebben

Adatbázisok webalkalmazásokban

Adatbázisok webalkalmazásokban Sapientia - EMTE, Pannon Forrás,,Egységes erdélyi felnőttképzés a Kárpát-medencei hálózatban 2010 A JDBC API A Data Access Object tervezési minta Adatforrás - DataSource JDBC architektúra A JDBC API java.sql

Részletesebben

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1 Web-fejlesztés NGM_IN002_1 Dinamikus tartalom 2. Servletek Java Servletek Szerver oldali alkalmazások Java nyelven szerver funkcionalitásának kiterjesztése dinamikus és interaktív tartalom el!állításra

Részletesebben

Interaktív weboldalak készítése

Interaktív weboldalak készítése Java programozási nyelv 2007-2008/ősz 7. óra Interaktív weboldalak készítése XHTML form Adatok feldolgozása szervletekkel legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Interaktív weboldalak készítése

Részletesebben

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

Szervlet-JSP együttműködés Java programozási nyelv 2007-2008/ősz 10. óra Szervlet-JSP együttműködés Kérés továbbítás technikái legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Szervlet-JSP együttműködés Témakörök Osztálykönyvtár

Részletesebben

Menetkövetés lehetőségei

Menetkövetés lehetőségei Java programozási nyelv 2007-2008/ősz 8. óra Menetkövetés lehetőségei Menetkövetés technikái Java szolgáltatások legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Menetkövetés lehetőségei Témakörök Szervlet

Részletesebben

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

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 2 Ismétlés Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI

Részletesebben

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

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC ADATBÁZISOK Adatbázis = adott formátum és rendszer szerint tárolt adatok összessége. DBMS feladatai: adatstruktúra (adatbázisséma)

Részletesebben

Java grafikai lehetőségek

Java grafikai lehetőségek Szerver oldali Java programozás 2007-08/II. 3. óra Java grafikai lehetőségek Java grafikai lehetőségek Képek generálása servletekkel szenasi.sandor@nik.bmf.hu Adatbázisok elérése Témakörök Java grafikai

Részletesebben

Java servlet technológia 1 / 40

Java servlet technológia 1 / 40 Java servlet technológia 1 / 40 Áttekintés Bevezetés Servlet map-elés web.xml-ben Szessziókövetés include, forward Szűrők 2 / 40 Áttekintés Bevezetés Servlet map-elés web.xml-ben Szessziókövetés include,

Részletesebben

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

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben Java GUI készítése, Oracle kapcsolódás JDBC-vel A jelen anyagban egy egyszerűsített megközelítéssel vizsgáljuk

Részletesebben

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1 Web-fejlesztés NGM_IN002_1 Dinamikus tartalom 3. Template feldolgozás Template feldolgozás Statikus (HTML) fájlok dinamikus tartalom beszúrással (speciális tagek) Template processzor PHP Cold Fusion ASP

Részletesebben

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame { Adatkezelés JDBC-vel 1 abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame { private JTabbedPane jtp; private JPanel dp,

Részletesebben

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

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa Web Technológiák Java Server Pages - JSP Répási Tibor egyetemi tanársegéd Miskolc Egyetem Infomatikai és Villamosmérnöki Tanszékcsoport (IVM) Általános Informatikai Tanszék Iroda: Inf.Int. 108. Tel: 2101

Részletesebben

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

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 Áttekintés Java servlet technológia Bevezetés Servlet map-elés web.xml-ben Szessziókövetés include, forward Szűrők 1 / 31 2 / 31 Servlet-et használni érdemes, ha a kimenet típusa bináris (pl. egy kép)

Részletesebben

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

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Adatbázis rendszerek II. V. előadás Előadó: Barabás Péter Dátum: 2008. 10. 16. 1 Java DataBase Connectivity Gazdanyelv: JAVA SQLJ (beágyazott SQL) Kiindulópont: SQL-CLI (X/Open) Hasonló az ODBC-hez nyelvi

Részletesebben

Java szervlet technológia

Java szervlet technológia Java szervlet technológia Igény a dinamikus tartalomra... Az első ilyen technológiák: kliens oldalon: appletek szerver oldali technológiák: CGI, JSP, PHP, ASP a CGI-ről CGI (Common Gateway Interface):

Részletesebben

A WEB programozása - JavaScript 6 dr.gál Tibor őszi előadás. A Windows Scripting Host (WSH)

A WEB programozása - JavaScript 6 dr.gál Tibor őszi előadás. A Windows Scripting Host (WSH) A Windows Scripting Host (WSH) Az egyik leghatékonyabb JavaScript végrehajtási környezet Használható Önállóan Böngészőben Kiszolgáló oldalon Hatékonyságát a nagyszámú hozzáférhető objektumnak köszönheti:

Részletesebben

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\

Részletesebben

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

Java programozási nyelv 2007-2008/ősz 9. óra. Java Server Pages. JSP technika alapjai Java programozási nyelv 2007-2008/ősz 9. óra Java Server Pages JSP technika alapjai legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Java Server Pages Témakörök JSP architektúra Scriptletek elhelyezése

Részletesebben

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT alapjai, bevezetés Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu PHP Personal Home Page (Tools) Script nyelv -> interpretált Elsősorban weboldal (dinamikus) tartalmak előállítására

Részletesebben

Stateless Session Bean

Stateless Session Bean Stateless Session Bean Készítsünk egy stateless session bean-t, amellyel összeadhatunk két számot. Hozzunk létre egy Dynamic Web projectet File New Other itt a következőket kell választani: Web Dynamic

Részletesebben

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

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

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

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans Enterprise JavaBeans Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Az Enterprise JavaBeans Az Enterprise Javabeans Az Enterprise JavaBeans (EJB) server oldali komponens, amely Az üzleti

Részletesebben

A JavaServer Pages (JSP)

A JavaServer Pages (JSP) A JavaServer Pages (JSP) Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 27. JSP Harmadik generáci ciós s WEB szerver A dinamikus lap a tipikus Dinamikus

Részletesebben

A WEB programozása - Bevezetés. 2010. őszi félév Dr. Gál Tibor

A WEB programozása - Bevezetés. 2010. őszi félév Dr. Gál Tibor A WEB Programozása Dr. Gál Tibor Automatizálási és Alkalmazott Informatikai Tanszék Általános információ Kommunikáció az előadóval Iroda: V2. épület, IV. emelet 454. szoba Tel: 2835 email: gal@aut.bme.hu

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

A JavaServer Pages (JSP)

A JavaServer Pages (JSP) A JavaServer Pages (JSP) Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem JSP WEB-es alkalmazások fejlődéstörténete A WEB-es alkalmazások fejlődését nyomon követve három nagy korszakot

Részletesebben

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk. OO PDO PDO VS MYSQLi VS MYSQL ================================================================================ A PHP mysql metódusai elavultak, helyette lehet hazsnálni a MYSQLi metódusokat, amelyek szinte

Részletesebben

B I T M A N B I v: T 2014.02.15 M A N

B I T M A N B I v: T 2014.02.15 M A N Adatbázis Rendszerek II. 7. Ea: MySQL JDBC B I v: T 2014.02.15 M A N 1/87 Témakörök JAVA «-» adatbázis-kezelés JDBC alapok Statement PreparedStatement CallabeStatement Tranzakció kezelés 2/87 A cél: Jávás

Részletesebben

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt. Csempe kalkula tor A küldetésünk az, hogy segítsünk kiszámítani egy fürdőszoba csempeszükségletét (felületét). Sőt, ha a kalkulátort használó ügyfél elégedett egyből elküldheti az e-mail címét, hogy a

Részletesebben

A. függelék Webalkalmazások

A. függelék Webalkalmazások A. függelék Webalkalmazások Az alábbiakban röviden bemutatjuk a Java szervleteket és a hozzájuk kapcsolódó JSP (Java Server Pages) oldalakat. Ezen kiszolgáló- és platformfüggetlen technológia a CGI esetében

Részletesebben

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

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server Kompozit alkalmazások fejlesztése IBM WebSphere Portal Server Portletek -összefoglaló Portlet: portálba integrálható kisalkalmazás Szabványok JSR 168 Portlet 1.0 (IBM API) JSR 286 Portlet 2.0 Dióhéjban

Részletesebben

A JavaServer Pages (JSP)

A JavaServer Pages (JSP) A JavaServer Pages (JSP) Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 27. JSP Harmadik generáci ciós s WEB szerver A dinamikus lap a tipikus Dinamikus

Részletesebben

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása DBMS spektrum Excel ODBC-ADO API Tevékenységpontok: - DBMS telepítés - ODBC driver telepítése - DSN létrehozatala -Excel-ben ADO bevonása - ADOConnection objektum létrehozatala - Open: kapcsolat felvétel

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 04. 08. 10. Előadás Ami kimearad múlthéten Ha már megvan a KeyListener vagy MouseListener osztályunk a következõ módon tudjuk hozzárendelni egy JFrame vagy JPanel-hez: Ami

Részletesebben

Adatbázis-kezelés ODBC driverrel

Adatbázis-kezelés ODBC driverrel ADATBÁZIS-KEZELÉS ODBC DRIVERREL... 1 ODBC: OPEN DATABASE CONNECTIVITY (NYÍLT ADATBÁZIS KAPCSOLÁS)... 1 AZ ODBC FELÉPÍTÉSE... 2 ADATBÁZIS REGISZTRÁCIÓ... 2 PROJEKT LÉTREHOZÁSA... 3 A GENERÁLT PROJEKT FELÉPÍTÉSE...

Részletesebben

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?

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? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

JAVA PROGRAMOZÁS 8.ELŐADÁS

JAVA PROGRAMOZÁS 8.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 8.ELŐADÁS 2014-2015 tavasz Véletlen elérésű állományok; JDBC 2 Véletlen elérésű állományok A RandomAccessFile osztály 3 Közvetlen hozzáférésű

Részletesebben

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Enterprise JavaBeans 1.4 platform (EJB 2.0) Enterprise JavaBeans 1.4 platform (EJB 2.0) Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11.13. Az Enterprise JavaBeans Az Enterprise Javabeans Az Enterprise JavaBeans

Részletesebben

Java és web programozás

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

Részletesebben

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában? Szálkezelés 1. A szekvencia diagram feladata az objektumok egymás közti üzenetváltásainak ábrázolása egy időtengely mentén elhelyezve. Az objektumok életvonala egy felülről lefelé mutató időtengely. A

Részletesebben

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

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary Oracle Containers for Java - j2ee alkalmazás szerver funkciók Molnár Balázs Oracle Hungary Mi is a J2EE? Szabványgyűjtemény Java alkalmazások számára A JavaSoft közösség alakította ki Összefogja az egyéni

Részletesebben

Java Database Connectivity (JDBC)

Java Database Connectivity (JDBC) Java adatbázisok elérése Java Database Connectivity (JDBC) JDBC Call Level Interface (CLI): standard, ami definiálja, hogy egy program hogyan kommunikálhat egy adatbázis management rendszerrel (DBMS).

Részletesebben

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) közönséges felhasználók SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:

Részletesebben

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

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák Java Web technológiák Bevezetés Áttekintés Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások Áttekintés Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások Áttekintés

Részletesebben

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

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. november 20. 10. El adás SQLite SQLite: Adatbázis kezel rendszer SQL standardokat nagyrészt követi Nagyon elterjedt, pl böngész kben is használt Nehéz olyan programnyelvet

Részletesebben

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

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC ADATBÁZISOK Adatbázis = adott formátum és rendszer szerint tárolt adatok összessége. DBMS feladatai: adatstruktúra

Részletesebben

Struts2 keretrendszer

Struts2 keretrendszer Áttekintés Struts2 keretrendszer Bevezetés Struts2 keretrendszer Action osztály Interceptor-ok OGNL 1 / 26 2 / 26 Már a megjelenésük kezdetén bebizonyosodott a Servletek hasznos volta. A CGI-vel szemben

Részletesebben

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

Az új be- és kimenet könyvtár Az új be- és kimenet könyvtár import java.io.ioexception; import java.io.fileinputstream; import java.io.fileoutputstream; import java.nio.channels.filechannel; import java.nio.bytebuffer; class Masol

Részletesebben

COSC 2206 Internet Tools. Java Servlets

COSC 2206 Internet Tools. Java Servlets COSC 2206 Internet Tools Java Servlets Java Servlets Tomcat Web Application Hello World Servlet Simple Servlets What is a servlet? A servlet is a special Java class that can be loaded by a servlet enabled

Részletesebben

Java Programozás 11. Ea: MVC modell

Java Programozás 11. Ea: MVC modell Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát

Részletesebben

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN B IT v: 2016.02.10 MAN SQL felületek Hatékony: SQL parancsok kiadására Eredmények megtekintésére Nehézkes: Nagyobb volumenű, rutintevékenységek

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Biztonság java web alkalmazásokban

Biztonság java web alkalmazásokban Biztonság java web alkalmazásokban Webalkalmazások fejlesztése tananyag Krizsán Zoltán 1 [2012. május 9.] 1 Általános Informatikai Tanszék Miskolci Egyetem 2012. május 9. Krizsán Zoltán [2012. május 9.]

Részletesebben

Memória játék. Felhasználói dokumentáció

Memória játék. Felhasználói dokumentáció Memória játék Felhasználói dokumentáció Feladat: JavaScript segítségével, olyan programot írni, mely összekeveri a lapokat, majd a felhasználónak kell párosítani. HTML oldalba ágyazva és CSS-el formázva.

Részletesebben

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül MySQL kontra MongoDB programozás SQL és NoSQL megközelítés egy konkrét példán keresztül Kardos Sándor sandor@component.hu Miről lesz szó? Miért érdemes őket összehasonlítani? MySQL általános jellemzői

Részletesebben

ANDROID ALKALMAZÁSFEJLESZTÉS

ANDROID ALKALMAZÁSFEJLESZTÉS ANDROID ALKALMAZÁSFEJLESZTÉS Adattárolás SharedPreference Belső - külső tároló PreferenceActivity Felhő alapú tárolás SQLite sicz.mj[tekercs]gmail.com Sicz-Mesziár János 2013. július 3. Shared Preference

Részletesebben

JDBC - adatbáziskezelés

JDBC - adatbáziskezelés Java technológiák - 10. előadás JDBC - adatbáziskezelés ANTAL Margit Sapientia - EMTE 2010 Az előadás célja JDBC API Data Access Object (DAO) tervezési minta Connection Pool DataSource JDBC API Olyan Java

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

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

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig

Részletesebben

Java programozási nyelv

Java programozási nyelv Szoftvertechnológia sáv Java programozási nyelv Dirk Louis-Peter Müller: Java (Belépés az internet világába) Panem kiadó, Budapest, 2002. Webvilág sorozat Készítette: Gregorics Tibor Vázlatos áttekintés

Részletesebben

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

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

Programozás és adatbázis kezelés PHP ben

Programozás és adatbázis kezelés PHP ben Programozás és adatbázis kezelés PHP ben Készítette: Pető László I. A programozási környezet A PHP platformfüggetlen programozási nyelv. A szkriptek futtatása szerveroldalon történik. Ezt a szerepet leggyakrabban

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2010/2011-2 félév, 11. gyakorlat (az előző 2 gyak közül az egyiken ZH volt, a másik szünet miatt elmaradt) 1 JAR fájl készítés A JAR (Java

Részletesebben

ASP és Java Servlet technológia összehasonlítása

ASP és Java Servlet technológia összehasonlítása Viczián István Szerzőről Viczián István a Debreceni Egyetem programtervező matematikus szakán végzett 2001 nyarán, ahol most levelező PhD. hallgató az elosztott rendszerek, middleware-ek témakörében. Jelenleg

Részletesebben

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Székely István Debreceni Egyetem, Informatikai Intézet A rendszer felépítése szerver a komponenseket szolgáltatja Java nyelvű implementáció

Részletesebben

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos PASzSz Kilencedik témakör: Lazarus-Firebird Készítette: Dr. Kotsis Domokos Az SQLdb fülön IBConnection Kapcsolat A Data Access fülön Az SQLdb fülön... Select 1. Az SQLQuery lezárása. (Active := false,

Részletesebben

Model View Controller alapú alkalmazásfejlesztés

Model View Controller alapú alkalmazásfejlesztés 10. Laboratóriumi gyakorlat Model View Controller alapú alkalmazásfejlesztés A gyakorlat célja: Az MVC elv megértése és ismerkedés egy egyszerű MVC keretrendszerrel. Felkészüléshez szükséges anyagok: 1.

Részletesebben

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész Java Programozás 6. Gy: Java alapok Adatkezelő 2.rész 25/1 B ITv: MAN 2018.04.13 A feladat Feladat: folytassuk a panel életre keltését! - Alakítsuk ki a Lista panelt - Betöltéskor olvassuk be az adatokat

Részletesebben

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani. Vizuális programozás 1. A gyakorlat célja A gyakorlat célja a Könyvtár alkalmazás folytatása az előző gyakorlaton elkészített grafikus felület felhasználásával. Elsőként lemásoljuk az előző gyakorlat eredményeként

Részletesebben

Web programozás. 3. előadás

Web programozás. 3. előadás Web programozás 3. előadás Űrlapok form label for input type select, option value szöveges mező: text textarea jelszó: password rádiógomb: radio jelölőnégyzet: checkbox küldés gomb: submit Web programozás

Részletesebben

Webfejlesztés alapjai

Webfejlesztés alapjai Webfejlesztés alapjai Óbudai Egyetem, Java Programozás Mérnök-informatikai kar Labor 7 Bedők Dávid 2016.12.01. v0.9 Webfejlesztés A mai világban szinte minden "programozás iránt érdeklődő" 14 éves "webprogramozó".

Részletesebben

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1 Web-fejlesztés NGM_IN002_1 Rich Internet Applications RIA Vékony-kliens generált (statikus) HTML megjelenítése szerver oldali feldolgozással szinkron oldal megjelenítéssel RIA desktop alkalmazások funkcionalitása

Részletesebben

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv PHP A PHP rövidítés jelentése hivatalosan: PHP Hypertext Preprocessor. Ez egy kiszolgáló-oldali parancsnyelv, amit jellemzően HTML oldalakon használnak. A különbség a két nyelv között az, hogy a kiszolgáló

Részletesebben

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

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa

Részletesebben

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 PHP beadandó 2 Honlapról elérhető Labirintus-játék

Részletesebben

Multimédia 2017/2018 II.

Multimédia 2017/2018 II. Multimédia 2017/2018 II. 1. gyakorlat HTML5, CSS3 alapok Alapvető HTML5 elemek Egyszerű HTML dokumentum Oldal cime

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Java Servletek alapjai

Java Servletek alapjai Java programozási nyelv 2007-2008/ősz 6. óra Java Servletek alapjai XHTML, HTTP, Tomcat Java szervletek legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Java Servletek alapjai Témakörök Extensible Hypertext

Részletesebben

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

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

JAVA SE/ME tanfolyam tematika

JAVA SE/ME tanfolyam tematika JAVA SE/ME tanfolyam tematika TANFOLYAM TEMATIKA: A JAVA MEGISMERÉSE Java története, miért készült, miért népszerű NETBEANS környezet telepítése, megismerése Programozási alapok java nyelven Változók,primitív

Részletesebben

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

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

Java programozási nyelv 10. rész Input/output kezelés

Java programozási nyelv 10. rész Input/output kezelés Java programozási nyelv 10. rész Input/output kezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/28 Tartalomjegyzék

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 12. gyakorlat 1 Távoli metódushívás Java-ban (RMI) Java-ban a távoli metódushívás ( Remote Method Invocation, RMI) egy

Részletesebben

Kliens oldali SQL-API

Kliens oldali SQL-API Adatbázis rendszerek I mysql SQL program API ME- GEIAL Dr. Kovács Lászl szló Üzleti logika elhelyezése adatbázis Kliens üzleti logika Nagy hálózati forgalom Decentralizált lt karbantartás Lassabb végrehajt

Részletesebben

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

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Nézetek kezelése Sok esetben

Részletesebben

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

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés Tartalom D Szoftvertechnológia elıadás Architektúra D vs CORBA Példá 2 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS

Részletesebben