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

Save this PDF as:
 WORD  PNG  TXT  JPG

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=\"http://localhost:8080/eloadasservlet/ertekeles1\"> + " 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 = // Adatbázis URL Sybase esetén // String url = // // 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

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

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

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

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

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

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

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 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

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 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

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

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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á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

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

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

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

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

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

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

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

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

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

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

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

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

Webprogramozás HTML alapok 2. 3. előadás

Webprogramozás HTML alapok 2. 3. előadás Webprogramozás HTML alapok 2. 3. előadás Hivatkozások - linkek Link: más webes tartalomra történő irányítás Hivatkozások - linkek abszolút hivatkozás fizika kar weboldala

Részletesebben

Szerver oldali Java programozás 2007-08/II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése. szenasi.sandor@nik.bmf.

Szerver oldali Java programozás 2007-08/II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése. szenasi.sandor@nik.bmf. Szerver oldali Java programozás 2007-08/II. 1. óra Elemkönyvtárak Elemkönyvtárak használata Saját elemkönyvtár készítése szenasi.sandor@nik.bmf.hu Adatbázisok elérése Témakörök Elemkönyvtárak használata

Részletesebben

Algoritmus terv. 1. Algoritmus általános áttekintése. 2. Inputok és outputok definiálása. 3. Folyamatok meghatározása. 4. Programozási utasítások

Algoritmus terv. 1. Algoritmus általános áttekintése. 2. Inputok és outputok definiálása. 3. Folyamatok meghatározása. 4. Programozási utasítások Ez a kép most nem jeleníthető meg. Algoritmus terv 1. Algoritmus általános áttekintése 2. Inputok és outputok definiálása 3. Folyamatok meghatározása 4. Programozási utasítások Készült az Agora Alapítvány

Részletesebben

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5. IBM WebSphere Adapters 7. változat 5. alváltozat IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.kiadás IBM WebSphere Adapters 7. változat 5. alváltozat IBM WebSphere

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

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

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

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

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

A Java nyelv. VI. Adatbázis-kezelés Javaban, Példaprogram Az elôzô részben láthattuk, hogy a Java ideális programozási nyelv perszisztens objektumok

A Java nyelv. VI. Adatbázis-kezelés Javaban, Példaprogram Az elôzô részben láthattuk, hogy a Java ideális programozási nyelv perszisztens objektumok 8] Karácsonyi Rezsô: Mechanika I. Középiskolai Tk., Nemzeti Tankönyvkiadó, Bp. 1995. 9] Paál Tamás: Mechanika II. Középiskolai Tk., Nemzeti Tankönyvkiadó, Bp. 1996. 10] Tomcsányi Péter (alk. szerk.): Fizika

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 5. gyakorlat 2017. október 9-13. 5. gyakorlat Programozási nyelvek II.: JAVA 1 / 34 Az 5. gyakorlat tematikája Kivételkezelés alapjai Be és kimenet BufferedReader, Scanner

Részletesebben

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár 2015. május 6. Vázlat 1 2 A világháló Története statikus és dinamikus oldal URL DNS-feloldás IP-cím ügyfél (kliens, böngész ) és szerver (kiszolgáló)

Részletesebben

Internetes böngésző fejlesztése a mobil OO világban

Internetes böngésző fejlesztése a mobil OO világban Internetes böngésző fejlesztése a mobil OO világban Novák György és Pári Csaba Témavezető: Bátfai Norbert Debreceni Egyetem Matematikai és Informatikai Intézet Kitűzött cél A PC-s világban megszokotthoz

Részletesebben

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit. Sapientia - EMTE 2008 Az előadás célja JPA - - perzisztencia ORM - - Objektumrelációs leképzés - Entitásbabok Állandóság Mechanizmus amely során az alkalmazás adatai megőrzésre kerülnek valamely perzisztens

Részletesebben

PHP-MySQL. Adatbázisok gyakorlat

PHP-MySQL. Adatbázisok gyakorlat PHP-MySQL Adatbázisok gyakorlat Weboldalak és adatbázisok Az eddigiek során megismertük, hogyan lehet a PHP segítségével dinamikus weblapokat készíteni. A dinamikus weboldalak az esetek többségében valamilyen

Részletesebben

Adatbázis-kezelés ODBC-vel

Adatbázis-kezelés ODBC-vel Adatbázis-kezelés ODBC-vel Készítette: Szabóné Nacsa Rozália 2004. november Adatbázis-kezelés API hívásokkal Alkalmazás Adatbázis 1 API 1 API 1 hívások Adatbázis 2 API 2 Alkalmazás API 2 hívások Adatbázis-kezelés

Részletesebben

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Egészítsük ki a Drupal-t. Drupal modul fejlesztés Egészítsük ki a Drupal-t Drupal modul fejlesztés Drupal 6.0 2008. február 13. Miért írjunk Drupal modult? Nincs az igényeinknek megfelelő modul Valamilyen közösségi igény kielégítése Valami nem úgy működik

Részletesebben

Számológép. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

Számológép. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő Felhasználói dokumentáció Számológép Feladat: JavaScript és CSS segítségével számológép készítése. Futtatási környezet: A http://10.0.0.101/~szabby/szgep.html linkre kattintva megjelenik az oldal. Az oldal

Részletesebben

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

1. fejezet Bevezetés a web programozásába (Balássy György munkája)... 11 Az internet működése... 11 Tartalomjegyzék 1. fejezet Bevezetés a web programozásába (Balássy György munkája)... 11 Az internet működése... 11 Géptől gépig... 11 Számok a gépeknek... 13 Nevek az embereknek... 14 Programok egymás

Részletesebben

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

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 12. előadás Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014.

Részletesebben

SZAKDOLGOZAT. Vígh Gábor DEBRECEN 2009.

SZAKDOLGOZAT. Vígh Gábor DEBRECEN 2009. SZAKDOLGOZAT Vígh Gábor DEBRECEN 2009. 1 Debreceni Egyetem Informatika Kar Témavezető: Készítette: Dr. Kuki Attila Vígh Gábor adjunktus Programtervező informatikus (Bsc) Debrecen 2009. 2 Webes alkalmazásfejlesztés

Részletesebben

Java programozási nyelv 11. rész Adatbázis-programozás

Java programozási nyelv 11. rész Adatbázis-programozás Java programozási nyelv 11. rész Adatbázis-programozá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/20 Tartalomjegyzék

Részletesebben

A webhelyhez kötődő szoftverek architektúrája

A webhelyhez kötődő szoftverek architektúrája A webhelyhez kötődő szoftverek architektúrája A webhelyhez kötődő szoftverek architektúrája...1 A kliens-szerver funkcionalitások megoszlása...1 A böngésző mint web kliens...1 Web szerver (kiszolgáló)

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

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

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció Serialization (in Java) Szerializáció Java Serialization API Standard eljárás az objektumok állapotának adatfolyamba történő kiírására (elmentésére egy bájtszekvenciába), és visszatöltésére Perzisztencia

Részletesebben

Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok. Android játékfejlesztés.

Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok. Android játékfejlesztés. Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok Android játékfejlesztés Godinek László Tartalomjegyzék 1 Mentés... 1 1.1 A fájlmentésről röviden... 1 1.2

Részletesebben

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális

Részletesebben

Az SQL*Plus használata

Az SQL*Plus használata Az SQL*Plus használata Célkitűzés Bejelentkezés az SQL*Plus-ba SQL utasítások szerkesztése Az eredmény formázása SQL*Plus utasításokkal Szkriptfájlok használata Az SQL és az SQL*Plus kapcsolata SQL*Plus

Részletesebben

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

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 Java hálózati alkalmazások Socket, URL Protokollok java.net: socket, URL (Uniform Resource Locators) Protokoll: számítógépek közötti kommunikáció szabályai Internet TCP/IP (Transport Control Protocol/Internet

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát

Részletesebben

Web programoz as 2009 2010

Web programoz as 2009 2010 Web programozás 2009 2010 Áttekintés A web rövid története Kliens szerver architektúra Néhány alapfogalom Kliens- illetve szerver oldali technológiák áttekintése Áttekintés: miről lesz szó (kurzus/labor/vizsga)

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Egységes és objektumközpontú adatbázis-kezelés (2. rész) Egységes és objektumközpontú adatbázis-kezelés (2. rész) A folytatásában a bemutatjuk, hogyan kezelhetünk Qt rendszer alatt SQL sormutatót, és készíthetünk grafikus felületet programoknak a Qt Designer

Részletesebben

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

MicroSigner Közvetítő Szerver fejlesztői dokumentáció MICROSEC ZRT. MicroSigner Közvetítő Szerver fejlesztői dokumentáció verzió: 1.0 Ivicsics Sándor, Máté Norbert, Vanczák Gergely 2016.06.09. Tartalom Általános információk... 2 ESign munkamenet létrehozása...

Részletesebben

Webshop készítése ASP.NET 3.5 ben I.

Webshop készítése ASP.NET 3.5 ben I. Webshop készítése ASP.NET 3.5 ben I. - Portál kialakíása - Mesteroldal létrehozása - Témák létrehozása Site létrehozása 1. File / New Web site 2. A Template k közül válasszuk az ASP.NEt et, nyelvnek (Language)

Részletesebben