2010. őszi félév. A WEB programozása -JSP3 dr.gál Tibor. // Kötelező csomagbeli elhelyezés package customtags;
|
|
- Zsombor Elek Kis
- 4 évvel ezelőtt
- Látták:
Átírás
1 JavaServer Pages (JSP) (folytatás) Felhasználó-definiált akcióelemek A szabványos JSTL elemei mellett a felhasználó maga is létrehozhat akcióelemeket, ún. custom tag-eket Ezt már a JSTL megjelenése előtt is megtehette a JSP 1.1 változatától kezdve Egy custom tag használatához a következők szükségesek tag handler Java class, amely implementálja a custom tag által megvalósítandó viselkedést tagkönyvtár leíró (tag library descriptor) a JSP konténerrel való együttműködéshez tartalmazza a custom tag nevét, az implementáló osztály nevét, a jellemzők leírását, stb. több tagkönyvtár leíró egy ún. tagkönyvtár leíró fájlban helyezendő el az alkalmazás telepítési leírójában (WEB-INF/web.xml) egy elemnek tartalmazni kell a tagkönyvtár leíró fájl helyét a JSP oldalon a használat előtt azonosítani kell a használandó custom tag-et Tag handlerek: megfelelő interfészeket implementálnak vagy az ezeket implementáló osztályokat bővítik JSP 1.1 : Tag és BodyTag interfész, TagSupport, BodyTagSupport, BodyContent és TagExtraInfo osztályok JSP 1.2 : IterationTag interfész és TagSupport osztály JSP 2.0 : SimpleTag és JspFragment interfész, SimpletagSupport osztály JSP 1.1 és 1.2 tag handlerek használata igen összetett a handler és a törzs szkripting elemei együttműködésének biztosításához több metódus szükségszerű használata: dostarttag(), doafterbody(), doendtag() stb. JSP 2.0 használata egyszerű egyetlen metódust kell csak implementálni, akár feldolgozandó a törzs akár nem de a törzs szkript elemeket (<%, <%!, <%@) nem tartalmazhat, HTML elemeket, EL kifejezéseket, akciós elemeket viszont igen Bevezető példa: Fix üzenetet generáló akcióelem a tag handler // Kötelező csomagbeli elhelyezés package customtags; // A szükséges csomagok importálása import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; // A SimpleTagSupport osztály bővítése public class EgyszeruUzenet extends SimpleTagSupport { // A dotag() metódus felüldefiniálása public void dotag() throws JspException, IOException { // Referencia a kimeneti folyamba író objektumra JspWriter out = getjspcontext().getout(); // Írás a kimeneti folyamba out.println("jó napot, Hölgyeim és Uraim"); 1
2 a tagkönyvtár leíró fájl, s benne az akcióselemünket leírótag elem <?xml version="1.0" encoding="utf-8"?> <taglib xmlns=" xmlns:xsi=" xsi:schemalocation=" version="2.0"> <tlib-version>1.2</tlib-version> <short-name>eloadasjsp</short-name> <name>udvozlet</name> <tag-class>customtags.egyszeruuzenet</tag-class> <body-content>empty</body-content> <!-- egyéb akcióelemek tagkönyvtár leírói --> </taglib> a tagkönyvtár leíró fájl azonosítása az alkalmazás WEB-INF/web.xml -ben <?xml version="1.0" encoding="iso "?> <web-app xmlns=" xmlns:xsi=" xsi:schemalocation=" version="2.4"> <jsp-config> <taglib> <taglib-uri> </taglib-uri> <taglib-location> /WEB-INF/eloadasJSP.tld </taglib-location> </taglib> </jsp-config> a jsp-config elem azonosít egy tagkönyvtár leíró fájlt az azonosítás a taglib-uri elemmel történik - erre kell majd hivatkozni az akcióelemünket használó JSP oldalon a taglib-location elem pedig a tagkönyvtár helyét adja meg az akcióelem használata a JSP oldalon prefix="msg" %> A következő üzenetet saját akcióelemmel írjuk ki:<br> <center style="font-size:24; color:red"> <msg:udvozlet /> </center> a használandó akcióelemet leíróját tartalmazó tld importálása a taglib direktívával az uri jellemzővel azonosítjuk a tld-t, ugyanez az uri szerepel a WEB-INF/web.xml telepítési leíróban a prefix jellemzővel adjuk meg, hogy milyen előtaggal használjuk a hivatkozott tagkönyvtár elemeit az előtag most msg az elem neve padig a tld-ben megadott udvozlet Jellemzőt tartalmazó akcióelem: a jellemzőben megadott adatokkal táblázat generálása a JSP oldal prefix="tb" %> A következõ táblázatot saját akcióelemmel generáltuk: <center> <tb:table1 adatok="elso oszlop;masodik oszlop;harmadik oszlop;;1;2;3;;a;b;c;;a;b;c" /> </center> az adatok jellemző értéke tartalmazza a megjelenítendő táblázat elemeit a sorokat ;; választja el, a cellákat pegi; table1 az akcióelem neve a tld-ben az újabb akcióelemünk tagkönyvtár leíróját ugyanabban a tld-ben helyezzük el, mint a korábbiét, ezért az alkalmazás telepítés leírójában újabb bejegyzésre nincs szükség 2
3 a tag handler // Kötelező csomagbeli elhelyezés package customtags; // A szükséges csomagok importálása import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; // A SimpleTagSupport osztály bővítése public class Tablazat1 extends SimpleTagSupport { // A jellemző értékét tároló privát stringobjektum private String adatok; // A jellemző értékét beolvasó metódus - mint JavaBeans // esetén public void setadatok(string adatok) { this.adatok = adatok; // A tényleges viselkedést specifikáló dotag() metódus // felüldefiniálása public void dotag() throws JspException, IOException { // Referencia a kimeneti folyamba író objektumra JspWriter out = getjspcontext().getout(); // Az adatok jellemző értékének szétválasztása a ;; // határolók mentén String[] t = adatok.split(";;"); out.println("<table border='1'>"); for(int i=0; i<t.length; i++){ out.println("<tr>"); // Egy sor celláinak szétválasztása a ; határoló mentén String[] tt = t[i].split(";"); // A táblázat egy sorának generálása a kimeneten for(int j=0; j<tt.length; j++) out.println("<td>"+ tt[j] + "</td>"); out.println("</tr>"); out.println("</table>"); a tagkönyvtár leíró fájban a korábbi akcióelem leírója mellett az új akcióelem leírója, az újabb tag elem <name>udvozlet</name> <tag-class>customtags.egyszeruuzenet</tag-class> <body-content>empty</body-content> <name>table1</name> <tag-class>customtags.tablazat1</tag-class> <body-content>empty</body-content> <attribute> <name>adatok</name> <required>yes</required> <rtexprvalue>true</rtexprvalue> </attribute> a tag új gyermekeleme az attribute elem, amely a jellemzőt írja le, ebben name a jellemző neve requiredyes vagy no értéke a kötelező használatra vonatkozik rtexprvaluetrue vagy false azt specifikálja, hogy értékeként futásidőben kiértékelendő kifejezés használható-e Törzset tartalmazó akcióelem: a törzsben megadott adatokkal táblázat generálása a JSP oldal prefix="tb" %> A következő táblázatot saját akcióelemmel generáltuk: <center> <tb:table2> Elso oszlop;masodik oszlop; Harmadik oszlop;; 1;2;3;;a;b;c;; A;B;C;; x;y;z </tb:table2> </center> az adatokat most az akcióelem törzse tartalmazza 3
4 a tag handler // Kötelező csomagbeli elhelyezés package customtags; // A szükséges csomagok importálása import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; // Ettől kezdve a program azonos a Table1 programmal, // hiszen az adatok most már az adatok objektumban // vannak // Egyetlen eltérés, hogy az adatok most StringWriter // típusú, ami a tostring() metódussal String típusba // alakítandó JspWriter out = getjspcontext().getout(); // A SimpleTagSupport osztály bővítése public class Tablazat2 extends SimpleTagSupport { public void dotag() throws JspException, IOException { // Refrenecia az elem törzsére JspFragment body = getjspbody(); // Egy StringWriter objektum létrehozása StringWriter adatok = new StringWriter(); // A törzs tartalmának beolvasása a létrehozott // StringWriter objektumba // Ha az argumentum null lenne, akkor a törzs tartalma // közvetlenül, feldolgozás nélkül kerülne a kimenetre body.invoke(adatok); String[] t = (adatok.tostring()).split(";;"); out.println("<table border='1'>"); for(int i=0; i<t.length; i++){ out.println("<tr>"); String[] tt = t[i].split(";"); for(int j=0; j<tt.length; j++) out.println("<td>"+ tt[j] + "</td>"); out.println("</tr>"); out.println("</table>"); a tagkönyvtár leíró fájban a korábbi akcióelemek leírói mellett az új akcióelem leírója, az újabb tag elem <name>udvozlet</name> <tag-class>customtags.egyszeruuzenet</tag-class> <body-content>empty</body-content> <name>table1</name> <tag-class>customtags.tablazat1</tag-class> <body-content>empty</body-content> <attribute> <name>adatok</name> <required>yes</required> <rtexprvalue>true</rtexprvalue> </attribute> <name>table2</name> <tag-class>customtags.tablazat2</tag-class> <body-content>scriptless</body-content> a body-content tartalma most nem empty, hanem scriptless, azaz Java szkripteken kívül mindent tartalmazhat A törzs számára hozzáférhető, változót exportáló akcióelem: szövegfájl olvasása, s az olvasott sorokhoz hozzáférés a törzsben akcióelemekkel vagy EL kifejezésekkel a JSP oldal prefix="k" %> <k:readline realfilepath= '<%=application.getrealpath("data/1.txt")%>'> ${line<br> </k:readline> a readline akcióelem soronként olvassa a realfilepath jellemzőjében specifikált fájlt, s az egyes sorokat a törsz számára egy line változóban exportálja a törzsben ennek a line változónak a tartalmát kivisszük a kimenetre a ${line EL kifejezéssel a fájl valóságos elérési útját, melyet az alkalmazás gyökeréhez képest ad meg a data/1.txt, a pagecontext.getservletcontext().getrealpath() állítja elő 4
5 a tag handler package customtags; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class ReadFile extends SimpleTagSupport { private String realfilepath; public void setrealfilepath(string realfilepath) {this.realfilepath = realfilepath; public void dotag() throws JspException, IOException { try { FileReader fr = new FileReader(realFilePath); BufferedReader br = new BufferedReader(fr); String s; while((s=br.readline())!=null) { // Az aktuális olvasott sor beírása line // változónéven a pagecontext objektumba, hogy az // hozzáférhető legyen a JSP oldalon getjspcontext().setattribute("line",s+"\n"); a tag handler (folytatás) // Az akcióelem törzsét végrehajtó utasítás // végrehajtása getjspbody().invoke(null); fr.close(); catch (IOException e) { Megjegyzés: a setattribute() metódusnak lehet egy harmadik argumentuma, amellyel a hatáskör állítható be. Ezek a következők lehetnek: PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE (ez a default). A fentiek az exportált változóhoz való hozzáférést rendre az alkalmazásban, a munkafolyamatban, a kérelem oldalain és végül magán az aktuális oldalon teszik lehetővé. a tagkönyvtár leíró fájban a korábbi akcióelemek leírói mellett az új akcióelem leírója, az újabb tag elem <name>readline</name> <tag-class>customtags.readfile</tag-class> <body-content>scriptless</body-content> <attribute> <name>realfilepath</name> <required>yes</required> <rtexprvalue>true</rtexprvalue> </attribute> Kiegészítés A tag handlerben közvetlenül nem férhetők hozzá a pagecontext, request, session, application objektumok metódusai. Ha mégis szeretnénk ezeket használni, akkor ezt a következőképpen megtehetjük: // a JSP oldalon <% pagecontext.setattribute("pc",pagecontext); %> <% pagecontext.setattribute("sc",application); %> // a tag handlerben PageContext pagecontext = (PageContext)getJspContext().getAttribute("pC"); ServletContext servletcontext = (ServletContext)getJspContext().getAttribute("sC"); Az előzőek valamelyikét használva, már elegendő lenne a fájl alkalmazásbeli útjának a megadása, s a tag handlerben előállítható lenne a valóságos elérési út a következőképpen: pagecontext.getservletcontext().getrealpath() // vagy servletcontext.getrealpath() 5
6 Fájl írása a jellemzőben megadott tartalommal a JSP oldal prefix="k" %> <%@ taglib uri=" prefix="c" %> <c:set var="s" value=""/> <k:readline realfilepath= '<%=application.getrealpath("data/1.txt")%>'> <c:set var="s" value="${s${line"/> </k:readline> <k:writefile realfilepath= '<%=application.getrealpath("data/2.txt")%>' text='${s' /> Az 1.txt fájlból rendre beolvasott sorokat hozzáfűzzük a kinullázotts EL változóhoz, majd az s változó tartalmát beírjuk a 2.txt fájlba. a tag handler package customtags; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class WriteFile extends SimpleTagSupport { private String realfilepath; private String text; public void setrealfilepath( String realfilepath){this.realfilepath = realfilepath; public void settext(string text){this.text = text; public void dotag() throws JspException, IOException { try { FileWriter fw = new FileWriter(realFilePath,false); BufferedWriter bw = new BufferedWriter(fw); bw.write(text); bw.close(); fw.close(); catch (IOException e) { a tagkönyvtár leíró fájban a korábbi akcióelemek leírói mellett az új akcióelem leírója, az újabb tag elem <name>writefile</name> <tag-class>customtags.writefile</tag-class> <body-content>scriptless</body-content> <attribute> <name>realfilepath</name> <required>yes</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>text</name> <required>yes</required> <rtexprvalue>true</rtexprvalue> </attribute> Fájl írása hozzáfűzéssel (append) a jellemzőben megadott tartalommal <%@ a taglib JSP oldal uri=" prefix="k" %> <%@ taglib uri=" prefix="c" %> <c:set var="apppath" value='<%=application.getrealpath("/")%>' /> <k:readline realfilepath='${apppathdata/1.txt'> <k:appendfile realfilepath='${apppathdata/3.txt' text='${line'/> </k:readline> A valóságos utat most kétszer is elő kellene állítani, ezért először előállítottuk az alkalmazás valóságos útját, majd ehhez rendre hozzáfűztük a relatív utakat A tag handler csak annyiban különbözik a előzőekben megadottól, hogy a FileWriter konstruktorban a második argumentum nem false, hanem true 6
7 Fájl olvasása és írása hozzáférési zárolással a JSP oldal <c:set var="s" value=""/> <c:set var="d" value='<%=new java.util.date()+"\n"%>' /> <c:set var="text" value=""/> <c:set var="apppath" value='<%=application.getrealpath("/")%>'/> <k:readwritefile realfilepath='${apppathdata/4.txt'> <c:choose> <c:when test="${readready!='yes'" > <c:set var="s" value="${s${line"/> </c:when> <c:otherwise> <c:set var="text" value='${s${d'/> </c:otherwise> </c:choose> </k:readwritefile> a tag handler package customtags; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class ReadWriteFile extends SimpleTagSupport { private String realfilepath; private String readready = "no"; public void setrealfilepath( String realfilepath){this.realfilepath=realfilepath; public synchronized void dotag() throws JspException, IOException { try { FileReader fr = new FileReader(realFilePath); BufferedReader br = new BufferedReader(fr); String s; a tag handler (folytatás) while((s=br.readline())!=null) { getjspcontext().setattribute("line",s+"\n"); getjspbody().invoke(null); fr.close(); catch (IOException e) { getjspcontext().setattribute("readready","yes"); getjspbody().invoke(null); try{ FileWriter fw = new FileWriter(realFilePath,false); BufferedWriter bw = new BufferedWriter(fw); String text = (String)getJspContext().getAttribute("text"); bw.write(text); bw.close(); fw.close(); catch (IOException e) { Megjegyzés: A tag handlerek class fájljait egyetlen jar fájlba tömörítve az alkalmazás lib könyvtárában is tárolhatjuk. A jar fájl előállítása - Hozzunk létre egy tmp/customtags nevű üres mappát - Töltsük be a handlerek class fájljait a customtags mappába - A tmp mappában hajtsuk végre a következő parancsot jar cf k.jar customtags/*.class - A keletkezett k.jar fájlt másoljuk be az alkalmazás lib könyvtárába 7
8 Az értékelés webalkalmazás megoldása fájl alapon az űrlapot megjelenítő oldal változatlan, csak az action jellemző értéke változtatandó meg ertekeles1filejstl.jsp -re az adatokat fogadó jsp oldal (ertekeles1filejstl.jsp) prefix="k" %> taglib uri=" prefix="c" %> <html> <body> <head> <style type=text/css> td{font-size:18pt;color:white; font-weight:bold; </style> </head> // '\n' nem írható be közvetlenül egy EL kifjezésbe <% pagecontext.setattribute("lf","\n"); %> <c:set var="apppath" value= '<%=application.getrealpath("/")%>'/> <k:appendfile realfilepath='${apppathdata/ertekeles.txt' text='${param.t1${param.t2${param.t3${lf'/> <h2>köszönjük, hogy értékelte az oktatót!</h2> Ha megkivánja tekinteni az eddigi értékelések átlagát, akkor <a href="ertekeles2filejstl.jsp">kattintsonide.</a> </html> Az átlagot megjelenítő oldal prefix="k" %> taglib uri=" prefix="c" %> taglib uri=" prefix="fn" %> taglib uri=" prefix="fmt" %> <html> <body> <head> <style type=text/css> td{font-size:18pt;color:white; font-weight:bold; </style> </head> <c:set var="sum1" value="${0" /> <c:set var="sum2" value="${0" /> <c:set var="sum3" value="${0" /> <c:set var="n" value="${0" /> <c:set var="apppath" value= '<%=application.getrealpath("/")%>'/> <k:readline realfilepath='${apppathdata/ertekeles.txt'> <c:set var="x" value="${line" /> <c:set var="sum1" value="${sum1+fn:substring(x,0,1)" /> <c:set var="sum2" value="${sum2+fn:substring(x,1,2)" /> <c:set var="sum3" value="${sum3+fn:substring(x,2,3)" /> <c:set var="n" value="${n+1" /> </k:readline> <fmt:setlocale value="hu" /> <center> <table bgcolor=black> <tr> <td colspan=2> <h2 style='background-color:red;color:white; font-weight:bold'> Az eddigi eredmények értékelése </h2> </td> </tr> 8
9 <tr> <td>a beküldött értékelések száma:</td> <td><c:out value="${n" /></td> </tr> <tr> <td>az eloadó felkészültsége:</td> <td><fmt:formatnumber value="${sum1/n" pattern="#.##" var="s1"/> <c:out value="${s1" /> </td> </tr> <tr> <td>az eloadó tárgyi tudása:</td> <td><c:out value="${sum2/n" /></td> </tr> <tr> <td>az eloadás érthetosége:</td> <td><c:out value="${k:format(sum3/n,2)" /></td> </tr> </table> </center> </html> Felhasználó-definiált EL függvények Lehetővé teszik felhasználó-definiált statikus metódusok hívását EL kifejezésekben. A statikus metódusokat definiáló osztály vagy osztályokat a tag handler osztályokkal azonos módon lehet tárolni Egy osztály akárhány metódust definiálhat A tld-ben minden metódust egy <function> bejegyzéssel azonosítunk Példa konverziós függvényekre package customtags; public class Conversions { //számot jelentő stringben a tizedspont helyettesítése //tizedesvesszővel, s max. n tizedesjegy meghagyása public static String format(string x, int n) { String y = x.replace('.',','); int i = y.indexof(','); if(i == -1) return y; return y.substring(0,i+n+1); // string átalakítása lebegőpontos számmá public static float stringtofloat(string x){ float y = 0; try{ y = Float.parseFloat(x); catch(exception e){ return y; Használat a JSP oldalon prefix="mf" %> <br> ${mf:format(" ",1)<br> ${mf:format(" ",3) Bejegyzés a tld-ben <function> <description>fixing decimal numbers</description> <name>format</name> <function-class>customtags.conversions</function-class> <function-signature> java.lang.string format(java.lang.string, int) </function-signature> </function> <function> <description>string to float</description> <name>stringtofloat</name> <function-class>customtags.conversions</function-class> <function-signature> float stringtofloat(java.lang.string) 9
10 Tag fájlok Tag fájlok Forrásfájl, amely egy JSP kódrészletet tartalmaz, s mint felhasználó definiált tag újrafelhasználható Lehetővé teszi felhasználó definiált tag-ok definiálását JSP szintaxissal Az eddigieknél hatékonyabb eszköz az oldalak szerzői számára Gyorsabbá teszi a fejlesztést Tag handlerbe transzformálódnak, s azután lefordítódnak Nem igényelnek TLD-t Egyszerűbb, mégis rugalmas becsomagolás A.tag fájlt egyszerűen a /WEB-INF/tags könyvtárban kell tárolni Az implicit tag könyvtár automatikusan generálódik De egy.tld is megírható a rugalmasság növelésére Vagy egy JAR fájlba is csomagolható egy.tld-vel Egy tag könyvtár deklarálása a JSP oldalon: a taglib direktívában a tagdir jellemzővel A taglib direktíva: A tagkönyvtárat azonosítja és specifikálja a JSP oldalon használandó prefixet. Kötelező jellemzői: tagdir= /WEB-INF/tags[/subdir]+ prefix= mytagfile Példák: <%@ taglib prefix="t1" tagdir=/web-inf/tags %> <%@ taglib prefix="t2" tagdir=/web-inf/tags/dir %> Tag fájl direktívák tag A felhasználói tag tulajdonságait deklarálja. Hasonló a JSP page direktívájához, de csak tag fájlokban használható Szintaxisa (piros színnel a default jellemzőértékek): <%@ tag [display-name="name of tag the file display-name"] [body-content="scriptless tagdependent empty"] [dynamic-attributes="page-scoped attribute"] [small-icon="relativeurl"] [large-icon="relativeurl"] [decription="text"] [example="text"] [language="java"] [import="{package.class package.*,"] [pageeencoding="{characterset ISO "] iselignored="true false"] %> 10
11 A tag direktíva fontosabb jellemzői: body-content scriptless: default érték, ekkor a hívó oldalon az elem tartalma sablon szöveg, EL kifejezések szabványos akciók felhasználó definiált akciók lehet (tehát csak szkript elemek nem!) Az elem tartalmát a tag fájl a <jsp:dobody /> hatására értékeli ki, s küldi a kimenetre vagy tárolja egy EL változóban empty: a hívó oldalon az elem tartalma üres kell legyen tagdependent: az elem tartalomban mindent sablon szövegnek tekint a fordító dynamic-attributes: Ha jelen van, akkor elfogad járulékos jellemzőket dinamikus nevekkel. Lásd később. Attributum: hívó tag file communikáció Az attribute direktíva lehetővé teszi, hogy a hívó JSP oldal adatokat adjon át a tag fájlnak. Az adat vagy normális (hívás előtt a konténer által kiértékelendő nemprimitív típusú adat) vagy fragment (a tag fájl által kiértékelendő kódrészlet) lehet. Az utóbbi esetben a tag fájlban a <jsp:invoke> hatására értékelődik ki a fragment attributum. Szintaxis a tag oldalon: <%@ attribute name="attribute-name" [required="true false"] [fragment="true false"] [rtexprvalue="true false"] [type="java.lang.string a non-primitive type"] [decription="text"] %> Ha fragment="true", akkor rtexprvalue és type nem adandó meg, ezek értékét a konténer true és javax.servlet.jsp.tagext.jspfragment értékre állítja be. 1.példa: normál attribútumok használata <!-- tag file, melynek neve szinvaltas.tag --> <%@ attribute name="szin" required="true" %> <font color="${szin"> <jsp:dobody /> </font> <!-- hívó jsp fájl --> <%@ taglib prefix="t1" tagdir="/web-inf/tags" %> <t1:szinvaltas szin="red" > Ez a szöveg vörös színnel fog megjelenni. </t1:szinvaltas> <t1:szinvaltas szin="${request.preferaltszin" > Ez a szöveg a felhasználó által megadott, preferált színnel fog megjelenni. </t1:szinvaltas> 2.példa: fragment attributum használata - a tag fájl <%@ attribute name="bookdb" required="true" type="database.bookdb" %> <%@ attribute name="color" required="true" %> <%@ attribute name="normalprice" fragment="true" %> <%@ attribute name="onsale" fragment="true" %> <%@ variable name-given="price" %> <%@ variable name-given="saleprice" %> <center><table> <c:foreach var="book" begin="0" items="${bookdb.books"> </c:foreach> <c:set var="saleprice" value="${book.price *.85" /> <c:set var="price" value="${book.price" /> <c:choose> <c:when test="${book.onsale" > <jsp:invoke fragment="onsale" /> </c:when> <c:otherwise> <jsp:invoke fragment="normalprice" /> </c:otherwise> </c:choose> </table></center> 11
12 2.példa (folyt.) - a hívó jsp oldal <sc:catalog bookdb="${bookdb" color="#cccccc"> <jsp:attribute name="normalprice"> <fmt:formatnumber value="${price" type="currency"/> </jsp:attribute> <jsp:attribute name="onsale"> <strike> <fmt:formatnumber value="${price" type="currency"/> </stike> <br/> <font color="red"> <fmt:formatnumber value="${saleprice" type="currency"/> </font> </jsp:attribute> </sc>catalog> A tag direktíva dynamic-attributes jellemzője lehetővé teszi járulékos jellemzők elfogadását dinamikus nevekkel. Példa: <!-- a tag file melynek neve szinteszt.tag --> <%@ taglib uri=" prefix="c" %> <%@ tag dynamic-attributes="szinek"%> <ul> <c:foreach var="szin" begin="0" items="${szinek"> <li> ${szin.key = <font color="${szin.value">${szin.value</font> </li> </c:foreach> </ul> <!-- a hívó JSP oldal --> <%@ taglib prefix="t1" tagdir=/web-inf/tags %> <t1:szinteszt szin1="red" szin2="yellow" szin3="green"/> Variable: tag file hívó communikáció A variable direktíva lehetővé teszi, hogy a tag fájlban beállított EL változó értékéhez a hívó JSP oldal hozzáférjen. Szintaxis: <%@ variable {name-given="scripting variable" (name-from-attribute="scripting variable" alias="(locally-scoped attribute") [variable-class="java.lang.string var. class name"] [declare="true false"] [scope="at_begin AT_END NESTED"] [decription="text"] %> A scope értelmezése AT_BEGIN a változó hozzáférhető a hívó oldalon a tag nyitóelemétől kezdve AT_END a változó hozzáférhető a hívó oldalon a tag záróelemétől kezdve NESTED esetén a változó csak az elem törzsében férhető hozzá Példa <!-- a.tag --> <%@ taglib prefix="c" uri=" %> <%@ variable name-given="x" scope="at_end" %> <c:set var="x" value="hello" /> <!-- b.jsp --> <%@ taglib prefix="tags" tagdir="/web-inf/tags" %> ${x <tags:a /> ${x A fenti példában az első hivatkozás az x változóra undefined értéket ad, mivel a változó még nincs deklarálva. Miután azonban a tag fájl meghívása megtörtént és a változó így értéket kapott, a második hivatkozás már a Hello stringet írja ki. 12
13 Példa: fájl olvasása <!-- readfile.tag file hivasa --> taglib prefix="tag1" tagdir="/web-inf/tags" %> <tag1:readfile fname='<%=application.getrealpath("data/1.txt")%>' > ${line<br> </tag1:readfile > <!-- readfile.tag file --> tag import="javax.servlet.jsp.*,java.io.*" %> attribute name="fname" required="true" %> variable name-given="line" %> <% int i = 1; try { FileReader fr = new FileReader(fname); BufferedReader br = new BufferedReader(fr); String s; while((s=br.readline())!=null) { session.setattribute("line", "<font color=red><b>"+i++ +":</b></font> " + s + "\n"); %> <jsp:dobody /> <% fr.close(); catch (IOException e) { %> Fontosabb elemek részletei <jsp:dobody> Ez az elem a tag fájlban kiértékeli a hívó jsp oldalon az elem tartalmát, s azt vagy a kimenetnek adja át, vagy egy EL változóban tárolja. Szintaxis: <jsp:dobody ({var="scopedattributename" varreader="scopedatributename" [scope="page request session application"]>) /> Ha a var jellemző jelen van, akkor az elem tartalma ebben tárolódik String formájában Ha a varreader jellemző jelen van, akkor az elem tartalma ebben tárolódik java.io.reader objektum formájában A fenti két jellemző közül legfeljebb az egyik lehet jelen Ha egyik sincs jelen, akkor az elem tartalma a kimenetnek (JspWriter) adódik át A scope értéke a var vagy varreader hatáskörét állítja be <jsp:invoke> Ez az elem kiértékeli a fragment attributumot. Szintaxisa: <jsp:invoke fragment="fragmentname" ({var="scopedattributename" varreader="scopedatributename" [scope="page request session application"]>) /> A fragment attribútum értéke azonosítja a kiértékelendő attribútumot Ha a var jellemző jelen van, akkor a kiértékelés eredménye ebben tárolódik String formájában Ha a varreader jellemző jelen van, akkor a kiértékelés eredménye ebben tárolódik java.io.reader objektum formájában A fenti két jellemző közül legfeljebb az egyik lehet jelen Ha egyik sincs jelen, akkor az elem tartalma a kimenetnek (JspWriter) adódik át A scope értéke a var vagy varreader hatáskörét állítja be 13
14 Tag fájlok becsomagolása Egy vagy több tag fájl becsomagolgató egy jar fájlba, de ekkor már egy tagkönyvtár leírót is létre kell hozni. Ebben az uri elem az egyértelmű azonosításra szolgál Minden tag számára most a tag elem helyett egy tag-file elemnek kell szerepelni a leíróban. Minden tag-file elemnek két gyermekeleme van: name és path. name: a tag nevét specifikálja, egyedi kell legyen az alkalmazásban path: a teljes elérési út, amely /META-INF/tags sztringgel kezdődik Példa: egy encode.tag tag fájl becsomagolása Legyen a tagkönyvtár leíró neve mytld2.tld, ennek alakja <?xml version="1.0" encoding="utf-8"?> <taglib xmlns=" xmlns:xsi= " xsi:schemalocation= " web-jsptaglibrary_2_0.xsd" version="2.0"> <description>jsp 2.0 tag files</description> <tlib-version>1.0</tlib-version> <short-name>my Tag Files</short-name> <uri> <tag-file> <name>encode</name> <path>/meta-inf/tags/encode.tag</path> </tag-file> </taglib> Hozzuk létre az alábbi könyvtárstruktúrát Lépjünk be a deploy könyvtárba, és hajtsuk végre az alábbi parancsot jar cvf mytagfiles.jar * Ez létrehozza a maytagfiles.jar fájlt. Másoljuk be ezt a fájlt az alkalmazás WEB-INF/lib könyvtárába Indítsuk újra a web konténert. Ekkor a következő JSP oldal hozzá fog férni az encode tag fájlhoz: <%@ taglib prefix="easy" uri=" %> <easy:encode input="<br/> hatása soremelés" /> 14
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észletesebbenA 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észletesebbenJavaServer 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észletesebbenJava 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észletesebbenA 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észletesebbenA 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észletesebbenA 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észletesebbenA Java Server Pages technológia. JSP és JSP elemkönyvtárak, JSTL alapok
A Java Server Pages technológia JSP és JSP elemkönyvtárak, JSTL alapok JSP Statikus és dinamikus részekkel egyaránt rendelkező webes tartalmak készítése megjelenítés JSP: szöveges dokumentum, amely statikus
RészletesebbenJSP standard elemkönyvtár JSTL. alap elemkönyvtár (core) nemzetköziesítés (internationalization) Saját elemkönyvtárak (Custom Tags)
JSP elemkönyvtárak Áttekintés Bevezetés JSP standard elemkönyvtár JSTL alap elemkönyvtár (core) nemzetköziesítés (internationalization) Saját elemkönyvtárak (Custom Tags) Elemkönyvtárak A JSP technológia
RészletesebbenA saját elemek. JSP standard elemkönyvtár JSTL alap elemkönyvtár (core) nemzetköziesítés (internationalization) Saját elemkönyvtárak (Custom Tags)
Áttekintés JSP elemkönyvtárak Bevezetés JSP standard elemkönyvtár JSTL alap elemkönyvtár (core) nemzetköziesítés (internationalization) Saját elemkönyvtárak (Custom Tags) 1 / 46 2 / 46 Elemkönyvtárak A
RészletesebbenJavaServer Pages JSTL, EL
JavaServer Pages JSTL, EL Krizsán Zoltán 1 [2014. május 19.] 1 Általános Informatikai Tanszék Miskolci Egyetem Webalkalmazások fejlesztése tananyag Tartalom Tag library (TL) Általános információk JSP Tagok
RészletesebbenSzervlet-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észletesebbenWeb-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észletesebbenHelyes-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észletesebbenOOP: 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észletesebbenJava 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észletesebbenHello 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észletesebbenMultimédia 2017/2018 II.
Multimédia 2017/2018 II. 1. gyakorlat HTML5, CSS3 alapok Alapvető HTML5 elemek Egyszerű HTML dokumentum Oldal cime
RészletesebbenJava 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észletesebbenJava programozási nyelv 4. rész Osztályok II.
Java programozási nyelv 4. rész Osztályok II. 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/17 Tartalomjegyzék
RészletesebbenJava 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észletesebbenProgramozá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észletesebbenAz 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észletesebbenBevezető. 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észletesebbenJava 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észletesebbenJava programozási nyelv 5. rész Osztályok III.
Java programozási nyelv 5. rész Osztályok III. 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észletesebbenOsztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
RészletesebbenA JSP életciklusa Szkript elemek Dinamikus tartalom létrehozása Kifejezés nyelv Tartalom újrafelhasználása Vezérlés átadása Visszatekintés
JSP technológia Áttekintés Bevezetés JSP életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC Áttekintés Bevezetés JSP életciklusa Szkript elemek, implicit
RészletesebbenJSP életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC
JSP technológia Áttekintés Bevezetés JSP életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC JSP technológia A JSP technológiával könnyen készíthető olyan
RészletesebbenJEE 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é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észletesebbenStateless 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észletesebbenA függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.
Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód
RészletesebbenJava 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észletesebbenOOP #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észletesebbenKivé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észletesebbenSegédanyag: Java alkalmazások gyakorlat
Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 2. gyakorlat 1 Osztályok és objektumok default, public, protected, private láthatóság a metódusokra és adattagokra (első
RészletesebbenObjektum 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észletesebbenWEBFEJLESZTÉ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észletesebbenInformatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
RészletesebbenWebshop 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észletesebbenAbstract 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észletesebbenJavaServer Pages programozóknak
JavaServer Pages programozóknak Írta: Mika Péter 2000. szeptember. Minden jog fenntartva. Tartalomjegyzék 1. BEVEZETÉS... 1 2. A JSP ÉS ELŐNYEI... 2 3. A JSP ELEMEI... 5 3.1 DIREKTÍVÁK... 5 3.1.1 A page
RészletesebbenJSP (Java Server Pages) technológia
JSP (Java Server Pages) technológia JSP technológia A JSP technológiával könnyen készíthető olyan web-tartalom, melynek statikus és dinamikus része van. A JSP rendelkezésre bocsátja a szervletek dinamikus
RészletesebbenKivé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észletesebbenA JSP életciklusa Szkript elemek Dinamikus tartalom létrehozása Kifejezés nyelv Tartalom újrafelhasználása Vezérlés átadása Visszatekintés
JSP technológia 1 / 39 Áttekintés Bevezetés JSP életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC 2 / 39 Áttekintés Bevezetés JSP életciklusa Szkript elemek,
RészletesebbenJSP technológia. A JSP elemek kétféle szintaxissal használhatók: A JSP
Áttekintés JSP technológia Bevezetés JSP életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC 1 / 35 2 / 35 JSP technológia A JSP technológiával könnyen készíthető
RészletesebbenEnterprise 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észletesebbenProgramozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
RészletesebbenPHP 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észletesebbenProgramozá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észletesebbenEnterprise 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észletesebbenProgramozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
RészletesebbenMiután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:
Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba
RészletesebbenOBJEKTUM 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észletesebbenJava II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
RészletesebbenSzkriptnyelvek. 1. UNIX shell
Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek
RészletesebbenOsztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;
PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function
RészletesebbenSzoftvertechnoló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észletesebbenWebfejlesztés alapjai
Webfejlesztés alapjai Óbudai Egyetem, Java Programozás Mérnök-informatikai kar Labor 7 Bedők Dávid 2017.10.30. v1.0 Webfejlesztés A mai világban szinte minden "programozás iránt érdeklődő" 14 éves "webprogramozó".
RészletesebbenProgramozás I. Első ZH segédlet
Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett
RészletesebbenProgramozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:
RészletesebbenPelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;
Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely
RészletesebbenOOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN
OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás
RészletesebbenSegé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észletesebbenJava 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észletesebbenJava VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1
Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum
RészletesebbenJava Programozás 1. Gy: Java alapok. Ismétlés ++
Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18 Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk
RészletesebbenProgramozási nyelvek Java
Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract
RészletesebbenJava VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.
Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum
RészletesebbenKifejezések. Kozsik Tamás. December 11, 2016
Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},
RészletesebbenGrafikus 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észletesebbenJava gyakorlat feladatai e s megolda sai (2014.04.10)
Java gyakorlat feladatai e s megolda sai (2014.04.10) 1. Feladat Számítsuk ki a Fibonacci sorozat első 20 tagját! / Fibonacci számsorozat tagjait kiszámoló, egyetlen osztályból álló program @author Bence
RészletesebbenProgramozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
RészletesebbenGlobális operátor overloading
Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal
RészletesebbenProgramozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
RészletesebbenTartalom 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észletesebbenJAVA PROGRAMOZÁS 3.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram
RészletesebbenJava 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észletesebbenProgramozási nyelvek Java
Programozási nyelvek Java 9. gyakorlat Fájlkezelés A fájlkezelés Java-ban különböző osztályok összekapcsolásával történik. Minden egyes osztály valamilyen minimális szolgáltatást tesz hozzá a többihez.
RészletesebbenHTML é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észletesebben1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
RészletesebbenSzámítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén
RészletesebbenSzoftvertechnolo gia gyakorlat
Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot
Részletesebben1. Egyszerű (primitív) típusok. 2. Referencia típusok
II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget
RészletesebbenKivételkezelés, naplózás. Exception handling, logging
Kivételkezelés, naplózás Exception handling, logging Try-catch try { // Kódrészlet, amely kivételt eredményezhet catch (Exception1 object1 ) { // Az Exception1 kivétel kezelésének megfelelő kód catch (Exception2
RészletesebbenAWK 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észletesebbenC#, OOP. Osztályok tervezése C#-ban
C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)
RészletesebbenOOP: Java 8.Gy: Gyakorlás
OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét
RészletesebbenKészítette: Nagy Tibor István
Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke
RészletesebbenA C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
RészletesebbenSegé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észletesebbenJava é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észletesebbenWCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens
WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens Hozzunk létre egy ASP.NET Empty Web Site projektet! A projekt neve legyen WCFAPP1. Ez
RészletesebbenProgramozási nyelvek és módszerek Java Thread-ek
Programozási nyelvek és módszerek Java Thread-ek Laki Sándor lakis@inf.elte.hu 2006. május 3. 0-0 Szálak (Threads) Ahhoz, hogy egy mai rendszer m ködhessen több 10-100 folyamatnak kell futnia. A folyamatok
Részletesebben3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
RészletesebbenAlprogramok, paraméterátadás
ELTE Informatikai Kar, Programozási Nyelvek és Fordítóprogramok Tanszék October 24, 2016 Programozási nyelvek Alprogramok Függvények, eljárások Metódusok Korutinok stb. Alprogramok Alprogram: olyan nyelvi
RészletesebbenXML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei
XML adatkezelés I. Az szabvány Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék XML adatok kezelési lehetőségei szövegszerkesztő API XML DOM API XSL XQUERY Az XML dokumentumok feldolgozó
RészletesebbenSQL*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