Top Banner
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119 Intézete 1. oldal FM116/01 Internetes alkalmazásfejlesztés Endrődi Tamás
214

Internetes alkalmazásfejlesztés

Jan 09, 2016

Download

Documents

ajaxe

Internetes alkalmazásfejlesztés. Endrődi Tamás. HTML alapok. Alap HTML tagok (1). HTML konténer tagok Karakter formázó HTML tagok Sorformázó HTML tagok P H1, H2, stb. BR, NOBR PRE CENTER. 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. Alap HTML tagok (2). Kép (IMG) Hiperhivatkozás (A) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 1. oldal

FM116/01

Internetes alkalmazásfejlesztés

Endrődi Tamás

Page 2: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 2. oldal

FM116/01

HTML alapok

Page 3: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 3. oldal

FM116/01

Alap HTML tagok (1)

• HTML konténer tagok

• Karakter formázó HTML tagok

• Sorformázó HTML tagok– P– H1, H2, stb.– BR, NOBR– PRE– CENTER

1.1

1.2 1.3

1.4

1.5

1.6

Page 4: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 4. oldal

FM116/01

Alap HTML tagok (2)

• Kép (IMG)

• Hiperhivatkozás (A)– A HREF attribútum megadásának lehetőségei

• Listák létrehozása– Rendezetlen lista (UL)– Rendezett, sorszámozott lista (OL)– Lista elemek (LI)

1.7

1.8

1.9

Page 5: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 5. oldal

FM116/01

HTML tábla• TABLE elem

– Táblasorok (TR)– Táblacellák (TD)

• Táblázatok formázásának attribútumai– BORDER– CELLSPACING, CELLPADING– BGCOLOR, BACKGROUND– COLSPAN, ROWSPAN

• HTML táblák egymásba ágyazása– Összetett Web lap megjelenítése táblaként

1.10

1.11

1.12

1.13

1.14

Page 6: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 6. oldal

FM116/01

HTML keret (Frame)

• Frame és Frameset szerepe

• COLS attribútum

• In-line keretek alkalmazása (IFRAME)

• Frameset-ek egymásba ágyazása

• Navigálás a keretek között– TARGET attribútum

1.15

1.16

1.17

Page 7: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 7. oldal

FM116/01

További HTML elemek

• COMMENT

• FIELDSET és LEGEND

• MAP

• SPAN és DIV

• XMP

• A karakter egyedek használata

1.18

1.19

1.20

1.21

1.22

1.23

Page 8: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 8. oldal

FM116/01

Cascading Style Sheet

Page 9: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 9. oldal

FM116/01

A CSS előnyei• A tartalom szétválasztható a formától• Önállóan tervezhető és újrafelhasználható• A régi technikában számos szöveg grafikaként jelent

meg, ami lassú• A CSS csak egyszer megy le a kliens gépre, és nem

laponként külön-külön• Egységes megjelenés• Külön CSS lehet a képernyőre, és külön a

nyomtatóra.

Page 10: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 10. oldal

FM116/01

CSS vezérlés

• Láthatóság (visibility)

• Megjelenítés (Display)– pl. reflow (maradjon-e üres hely, vagy az alatta

lévők feljebb kússzanak)

• Z-sorrend (Z order)– Az adott elem relatív mélysége

• Web Embedding Font Tool (WEFT)– Csak az IE használja

Page 11: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 11. oldal

FM116/01

CSS szabályok definiálása

• Szintaktika:– szabályhatáskör {attr:érték;attr:érték;…}

• Tag példa:– body {font-family:ariel;font-size:10;}

• Osztály példa:– .error {font-color:red}

• A pont (.) jelenti azt, hogy ez egy osztályszabály

Page 12: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 12. oldal

FM116/01

CSS használata• Magába a tagba is rakható stílus információ

– Kivételes körülmények között

• Stíluslap szintaktikája• Globális stíluslap a /HEAD szekcióban• HTML LINK tag használata

– Az elsődlegeshez ezt célszerű használni

• Osztályok– Stílus osztályok

– Globális osztályok

– Pszeudoosztályok

2.1

2.2

2.3

7.6

2.4

2.5

2.6

Page 13: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 13. oldal

FM116/01

Page 14: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 14. oldal

FM116/01

DHTML alapok

Page 15: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 15. oldal

FM116/01

A DHTML komponensei (1)• Document Object Model

– Objektumok, tulajdonságok, metódusok, események

• Dynamic Styles– Dinamikus stílus beállítás lehetősége

– A stílus élesen elválik a tartalomtól

• Dynamic Positioning– A betöltést követő helyváltoztatás lehetőségét nyújtja.

– Animáció készítésének lehetősége.

Page 16: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 16. oldal

FM116/01

A DHTML komponensei (2)

• Dynamic Contect– A tartalom dinamikus változtathatósága– Elemek beillesztése, illetve törlése– Szöveg és egyéb attribútumok módosítása

• Data binding– Adathordozó vezérlőelemek beépíthetősége

Page 17: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 17. oldal

FM116/01

Page 18: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 18. oldal

FM116/01

Kliensoldali script alkalmazása• HTML komment technikát kell használni

– <SCRIPT Language=VBScript><!--

Function Valami() ……..End

--></SCRIPT>

– Ha a böngésző nem ért VB-ül, akkor ignorálja, mert kommentnek tekinti.

5.2 5.3

Page 19: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 19. oldal

FM116/01

VBScript szabályok

• VBScript-nél csak Variant adattípus van.– A típust a VarType fg-vel lehet lekérdezni.

• Nem lehet konstans deklarálni.

• Automation objektumok:• Dictionary, Err, FileSystemObject, TextStream

• Szerveroldali VBScript-ben tilosak:• InputBox, MsgBox, GetObject függvények

Page 20: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 20. oldal

FM116/01

Jscript szabályok

• Java-tól függetlenül jött létre

• Pontosvessző az utasítások végén– Nem kötelező használni!

• Kommentjelek ( //, illetve /*…..*/ )

• Változódeklaráció– var Kakukk

• Érzékeny a kisbetű-nagybetű különbségre!

• A deklaráció nem kötelező.

Page 21: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 21. oldal

FM116/01

Jscript műveletek• Boole algebrai műveletek:

• && AND• | | OR• ! NOT

• Matematikai műveletek:– A Math objektum metódusai:

• x = Math.PI• y = Math.LN10• z = Math.max(num1, num2)

• String változók objektumként működnek

Page 22: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 22. oldal

FM116/01

Jscript vezérlőszerkezetek

if (feltétel { // igaz ág }else { // hamis ág }

For (x=1;x<=10;x++) { // ciklusmag }

Page 23: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 23. oldal

FM116/01

Kliensoldali programozás elemei• Az IIS simán leküldi a böngészőnek• Tipikusan UI elemek• ActiveX control és Java applet• ActiveX control

– ToolBox-ból kényelmesen felrakható– Bármit megtehet a user gépén

• A VBScript és a Jscript nem tudott a file rendszerbe belenyúlni

– Certificate és Authenticode mechanizmus• Eldöntheti a user, hogy letölti vagy sem.

Page 24: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 24. oldal

FM116/01

ActiveX control• Szintaktika:

• <OBJECT classid="clsid:registryszám" id=név <PARAM NAME="Year" VALUE="1999"> …..</OBJECT>

• A classid egy Global Unique Identifier (GUID)– az időből (msec), és

– az aktuális gép infoból csinál egy hexa számot

• A PARAM tagban lehet serverscript is, pl:– <PARAM NAME <%=változó%>…..

• CodeBase tulajdonság adja meg a control URL-jét– Akkor kell, ha le kellene tölteni, mert nincs a user gépén.

Page 25: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 25. oldal

FM116/01

Java appletek• Szintaktika:

• <APPLET code=valami.class id=kutya<PARAM NAME=Ez VALUE="Az">

/APPLET>

• Toolbox-ra felrakható, és újrafelhasználható• A class file gépfüggetlen byte kódból áll.

– .java file-ból generálja a Java compiler– Egy applet több .class-ból is állhat.

• Intranet=ActiveX, Internet=Applet– A legjobb a sima HTML(?!)

Page 26: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 26. oldal

FM116/01

window objektum• Metódusok

– open, showModelDialog, showModelessDialog, close, navigate

• Tulajdonságok– document, event, history, location, navigator

• Események– onload, onbeforeunload, onunload, onfocus, onblur

• Kollekció– frames

Page 27: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 27. oldal

FM116/01

document objektum• Metódusok

– open, write, close, createElement, insertAdjacentElement, insertBefore

• Tulajdonságok– body, cookie, title

• Események– onclick, onpropertychange, onmousexxx, onkeyxxx,

ondragxxx

• Kollekciók– all, frames, forms

5.4

Page 28: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 28. oldal

FM116/01

További DHTML objektumok

• navigator objektum– Csak tulajdonságadatai vannak

• event objektum– srcElement, type, propertyName, fromElement,

toElement, returnValue tulajdonságok– A cancelBubble szerepe

• form objektum– A document.forms kollekcióból származtatható

5.5

5.6

Page 29: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 29. oldal

FM116/01

Behavior• Script encapsulation (component)• Szintaktikai alakja:

– {behavior:string}, ahol a string lehet:• "url(a1.htc) url(a2.htc)…"• "url(#objID)"• "url(#default# név)"

– Dinamikus hozzárendelés is használható:• addBehavior(), removeBehavior()

• Elkészítés eszköze:– VBScript, Jscript, Windows Scripting Components

(WSC) vagy C++

Page 30: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 30. oldal

FM116/01

HTC referencia (1)• ATTACH (eseménykezelő hozzárendelése)

• <PUBLIC:ATTACH EVENT=sNev FOR=document | element | window ONEVENT=sFg ID=sID/>

• METHOD (dokumentumból hívható)• <PUBLIC:METHOD NAME=sNev

INTERNALNAME=sIntNev ID=sID/>

• PROPERTY (dokumentumban használható)• <PUBLIC:PROPERTY NAME=sNév ID=sId

INTERNALNAME=sIntNév GET=sFg1 PUT=sFg2 PERSIST=bPersist VALUE=vKezdőÉrték/>

Page 31: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 31. oldal

FM116/01

HTC referencia (2)• EVENT (a dokumentumnál lép fel)

• <PUBLIC:EVENT NAME=sNév ID=sID/>

• COMPONENT (a legkülső konténer)• <PUBLIC:COMPONENT NAME=sNev ID=sID

URN=sURN>….</PUBLIC:COMPONENT>

• element objektum– A komponensen belül az elem elérésére szolgál

• createEventObject és fire metódusok

Page 32: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 32. oldal

FM116/01

HTC referencia (3)

• Speciális behavior események– ondocumentready

• Amikor a dokumentum ellenőrzött (parsed)

– oncontentready• Az adott elem ellenőrzött (parsed)

– ondetach• Amikor az elemről leszedtük a behavior-t (pl. egy

removeBehavior metódussal vagy az ablak bezárásával)

Page 33: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 33. oldal

FM116/01

HTC referencia (4)• Fontos tulajdonságadatok

– style.behavior• Így lehet hozzáférni a behavior-hoz.

– behaviorUrns• Az adott elemhez rendelt behavior-ok URN-jeinek kollekciója

– document.all.urns("x")• Azokat az elemeket adja vissza, amelyekhez az adott behavior-t

rendeltük.

– scopeName• A namespace-t adja vissza (XMLNS:név)

– tagURN• A namespace helyettesítő értékét adja vissza (XMLNS:név="http:…")

Page 34: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 34. oldal

FM116/01

Default Behavior elemek

• Multimédia elemek– img, anim, animation, audio, video, media, seq,

time, par

• clientCaps (információ a böngészőről)

• download (egy letöltés végigvitele)– startDownload metódussal

• anchor, httpFolder (folder nézet megjelenítése)

Page 35: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 35. oldal

FM116/01

Perzisztencia• Előnyei

• Keresésnél megmarad a régi keresőkifejezés• A fastruktúra úgy jön be, ahogy hagytuk• Űrlap adatokat nem kell ide-oda cipelni, amíg nincs minden

kitöltve• Vásárlókosárnál az eddig bejelöltek megmaradnak.

• userData• Jobb, mint a cookie, mivel session-ök közt is működik (64K/lap)• save és load metódus• Tárolás: XML Store

• saveFavorite, saveHistory, saveSnapshot

Page 36: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 36. oldal

FM116/01

Custom Tag használata

• Példa:• <HTML XMLNS:SAJAT>

<STYLE>@media all {SAJAT\: IGAZIT {

text-align:justify; width:500} }</STYLE>…<SAJAT:IGAZIT>….….</SAJAT:IGAZIT>

Page 37: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 37. oldal

FM116/01

Dinamikus tulajdonságok• Sok helyen a scriptek helyett elég egy képlet

– Excel-szerű táblázat automatikusan frissülő összesen cellával.

– Elem pozíciója az egértől függ. (drag & drop)

– Időzített elemmozgatás valósítható meg

• Metódusok– object.setExpression(sProperty,sKif,sNyelv)

– bSiker=object.removeExpression(sProperty)

– document.recalc() implicit függőségeknél

– vKif=object.getExpression(sProperty)

Page 38: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 38. oldal

FM116/01

Dinamikus tartalom

• sajatH1.innerText = "Új szöveg"

• sajatH1.innerHTML = "Új <I>szöveg</I>"

• sajatH1.outerText = "Valami"

• sajatH1.outerHTML="<SPAN>..</SPAN>"• Ez lecseréli a <H1> tagot <SPAN>-re

• Figyelem! Csak a window.onload után!

Page 39: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 39. oldal

FM116/01

Mouse Capture• Adott objektumhoz rendelhetjük az egéresemények

kezelését– object.setCapture

• Ha pl. az object egy DIV, akkor a benne lévő összes elemnél a DIV-beli eseménykezelés él.

– object.releaseCapture• Megszüntetés (fellép az onlosecapture esemény)

• Példa:– Dinamikus pop-up menü készíthető, ami mindig az

aktuális objektum tulajdonságadatait mutatja– Kétszintű lebomló menü is előállítható

Page 40: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 40. oldal

FM116/01

Adatkezelés a DHTML segítségével

Page 41: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 41. oldal

FM116/01

DHTML adatbázis komponensek

• Data Source Objects– Az adatot biztosítja a Web lap számára

• Data Consumers– Az adat megjelenítéséről gondoskodik

• Binding Agent– A szinkronizálásért felelős

• Table repetition agent– A szinkronizálásért felelős

Page 42: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 42. oldal

FM116/01

DHTML adat architektúra

Page 43: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 43. oldal

FM116/01

DSO objektumok

• Tabular Data Control (TDC)

• Remote Data Services (RDS)– Régebben ADC volt a neve)

• JDBC applet

• XML adatforrás objektum

• MSHTML adatforrás objektum

Page 44: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 44. oldal

FM116/01

A DSO feladatai és működése• Feladatok:

– Meghatározza hogyan néz ki az adat– Lehozza az adatot a Web lapra– Manipulál az adattal– Visszajuttatja a módosításokat a szerverre.

• Aszinkron vagy szinkron transzport.– Az aszinkron a javasolt.

• OLE DB API-t kell tudni az adatszolgáltatónak.

Page 45: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 45. oldal

FM116/01

Tabular Data Control (TDC)

• ActiveX control az IE 4.0-ban

• Mezőszeparátorokkal elválasztott mezők és sorszeparátorokkal elválasztott sorok.– A legtöbb adatbázis-kezelő képes ilyet

előállítani.

• UseHeader=True– Az első sor a mezőinfot tartalmazza

Page 46: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 46. oldal

FM116/01

A TDC tulajdonságai és metódusai

• Tulajdonságok– DataURL Az adatfile URL címe.

– FieldDelim A vessző az alapértelmezés.

– RowDelim Az NL az alapértelmezés.

– Sort Pontosvesszőkkel elválasztott mezőlista.A mezőnév előtt + vagy - állhat.

– Filter Szűrőfeltétel.

• Metódusok– Reset Végrehajtja a rendezést és a szűrést.

Page 47: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 47. oldal

FM116/01

Remote Data Service (RDS)• Komplexebb és robosztusabb, mint a TDC.

• Data-marshalling (Spec. MIME formátum)

• Kétirányú kapcsolat az adatbáziskezelőkkel.

• Komponensek– RDS.DataControl (kliensoldalon)– RDS.DataFactory (szerveroldalon)

• SubmitChanges (RDS.DataControl metódusa)• A módosítások élesítése.• Csak a módosított rekordok mennek át a szerverre.

Page 48: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 48. oldal

FM116/01

Remote Data Service (2)• A kliensoldalon a következő szükséges:

<OBJECT id=valami classid="clsid:…….."><PARAM name="Server" value="http://X.Y.hu"><PARAM name="Connect" value="DSN=kakukk"><PARAM name="SQL" value="select * from g">

</OBJECT>

• Protokollok:• HTTP• HTTPS• DCOM• in-process COM

Page 49: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 49. oldal

FM116/01

XML adatforrás objektum

• XML = Extensible Markup Language

• Az adatformátum leírását tartalmazza.

• Bármilyen TAG használható, nemcsak a normál HTML tagok.

• XML Parser kell az értelmezéshez.– (XMLDSO.class nevű JAVA)

Page 50: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 50. oldal

FM116/01

Data Consumers• Adatfogyasztó elemek

• Normál HTML elemek

• ActiveX-ek

• Java appletek

• Attribútumok– DATASRC Az adatelem (pl. TDC) ID-je

– DATAFLD Melyik mezőhöz kapcsoljuk az adott HTML elemet.

– DATAFORMATAS"text" vagy "html" lehet.

– DATAPAGESIZE Hány sor jelenjen meg egyszerre.

Page 51: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 51. oldal

FM116/01

Adatfogyasztó HTML elemekElem Update HTML BoundA False False HrefAPPLET True False PARAM property értékBUTTON False True innerText, innerHTMLDIV False True innerText, innerHTMLFRAME, IFRAME False False srcIMG False False srcINPUT True False checked, valueLABEL False True innerText, innerHTMLMARQUEE False True innerText, innerHTMLSELECT True False obj.options(obj.

selected-index).textSPAN False True innerText, innerHTMLTEXTAREA True False value

Page 52: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 52. oldal

FM116/01

Szinkronizálás• Binding agent

– Az MSHTML.DLL-ben van (Ez a HTML Viewer)

– Scriptekkel felfogható eseményeket tüzel ki, melyek a DSO és a Consumer közötti szinkront teremtik meg (Notify mechanizmus)

• Table repetition agent– Ez biztosítja, hogy HTML TABLE-ként

jelenjenek meg a táblázatos adatok.

Page 53: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 53. oldal

FM116/01

XML alapok

Page 54: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 54. oldal

FM116/01

XML (Extensible Markup Language)

• Az SGML (Standard Generalized Markup Language) subset-je

• Platform-független adatátadás– Bármilyen dokumentum– Adatrekord– Objektum adatokkal és metódusokkal– Grafikai UI elem– Séma információ– Meta elem (pl. Channel Definition Format)

Page 55: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 55. oldal

FM116/01

XML példa<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="konyv.xsl"?><!DOCTYPE filmek SYSTEM "filmek.dtd"><filmek>

<film nyelv="angol"> <cím>Matrix</cím>

<szereplő>Keanu Reeves</szereplő> <szereplő>Laurence Fishburne</szereplő>

</film><film nyelv="magyar">

<cím>Csinibaba</cím> <szereplő>Gálvölgyi János</szereplő> <rendező>Tímár Péter</rendező>

</film></filmek>

Page 56: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 56. oldal

FM116/01

Az XML előnyei (1)• Keresések értelmesebbek lehetnek:

– Könyvkeresésnél pl. ma a "Bill Gates"a róla szóló és az általa írt könyveket is kihozza

– Az egymással inkompatibilis adatbázisokban való kombinált keresés megoldható

• Az adat a séma révén az értelmezési és validálási infot is hordozza

• Egy XML a szervertől függetlenül is kezelhető, sőt módosítható is.

• Granuláris update: nem kell az egész lapot letölteni, ha csak egy adatsor változott

Page 57: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 57. oldal

FM116/01

XML előnyei (2)

• Független a UI-től, ezért a user ízlésének megfelelő prezentációt lehet hozzá csatolni– Hasonló a mail-merge-höz

• Jól tömöríthető az adatátadásnál– A tagok szabályos ismétlődő szerkezete jól

fekszik a tömörítő eljárásoknak– A HTTP 1.1 szerverek és kliensek már ki is

használják ezt.

Page 58: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 58. oldal

FM116/01

Namespaces• A különböző XML dokumentumok

összekapcsolásakor a tagok megkülönböztetése miatt kell

• Példa:• <Rendelesek xmlns:partner="//www.et.hu/x"

xmlns:dsig="//dsig.org"> <partner:nev> <partner:vezeteknev>Nagy</partner:vezeteknev> <partner:keresztnev>Pál</partner:keresztnev> </partner:nev> <dsig:digalair>1235801</dsig:digalair></Rendelesek>

Page 59: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 59. oldal

FM116/01

Adat és prezentáció szétválasztása• HTML

– A Web lap "szöveges", nem változó része

• CSS– A HTML rész stílus információi

• XML– A Web lap "adat" része. (Minden, ami változhat)

• XSL (Extensible StyleSheet Language)– Az "adat" rész stílusinformációi

Page 60: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 60. oldal

FM116/01

XML dokumentum szabályok• Kezdő és záró tag mindig kell (well-formed

document)• Rövidítés lehetséges, pl.: <Kutya/>

• Kisbetű/nagybetű különbségre érzékeny!• Az XML dokumentum gyökéreleme egyedi• Unicode-os karakterkészletet használ

(1 karakter=16 bit)• Az attribútumok megadásakor idézőjelek

használata

Page 61: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 61. oldal

FM116/01

XML Data Island• Az adatsziget egy XML a HTML lap belsejében

– Inline megadás• <XML ID="Valami">

<film><cím>Matrix</cím>

</film></XML>

– SRC hivatkozás• <XML ID="Valami" SRC="film.xml"</XML>

– Script tag• <SCRIPT LANGUAGE="xml" ID="Valami">

<film> … stb.</SCRIPT>

Page 62: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 62. oldal

FM116/01

XML ágak elérése a DOM-ból• Valami.documentElement

• A komplett gyökér elemet éri el

• Valami.documentElement.childNodes• A gyökér alatti ágak kollekcióját éri el

• Valami.documentElement.childNodes.item(0).nodeName

• A gyökér alatti első ág nevét adja vissza• nodeName helyett a text a tartalmat adná vissza• nodeName helyett a childNodes.item(0).text eggyel beljebb

menne a hierarchiában.

Page 63: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 63. oldal

FM116/01

XML attribútumok elérése

• Valami.documentElement.childNodes.item(n).attributes.item(z).nodeName

• Az első szinten található n-edik ág z-edik attribútumának a neve

• Valami.documentElement.childNodes.item(n).getAttribute("nyelv")

• Az első szinten található n-edik ág "nyelv" nevű attribútumának az értéke

Page 64: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 64. oldal

FM116/01

További elemek az XMLDOM-ban• Data Island elemeinek elérése

• Valami.XMLDocument.documentElement.stb.

• Namespace elemek elérése– xmlns:partner="//www.et.hu/x" esetén:

• nodeName a teljes nevet adja vissza prefix-szel együtt

• namespaceURI az URI nevet vagy ""-t ad vissza

• prefix a példában "partner"

• baseName a prefix nélküli nevet adja vissza

• adottTag.xml– A teljes XML string-et adja vissza

Page 65: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 65. oldal

FM116/01

XMLDOMDocument• Kétféle interfész létezik:

– XMLDOM Interface (COM prog. Interface)– XMLDOM Objects (ActiveX interface)

• XMLDOMDocument objektum létrehozása– VBScript

• Set xmldok = CreateObject("Microsoft.XMLDOM")

– Jscript• Var xmldok = new

ActiveXObject("Microsoft.XMLDOM")

– Visual Basic• Dim xmldok = New DOMDocument

Page 66: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 66. oldal

FM116/01

XML file betöltése• xmldok.load("//et/kakukk.xml")

• xmldok.loadXML("<vevő>….</vevő>")

• Aszinkron (default) és szinkron betöltés• xmldok.async = false (még a load előtt)• xmldok.abort-ra az aszinkron betöltés leállítható• Az értelmezés elhalasztható

xmldok.validateOnParse = false (ezt is a load előtt)• Hiba esetén a parseError ad információt

• Mentés• xmldok.save(Server.MapPath("Minta.xml"))

Page 67: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 67. oldal

FM116/01

Dokumentumágak elérése• Set root = xmldok.documentElement

For Each gyerek In root.childNodesMsgBox gyerek.text

Next• Set yNode=xmldok.documentElement.

nodeFromID("xxxyyzz")• Set yNodeList=xmldok.documentElement.

getElementsByTagName("film") vagySet yNodeList=xmldok.documentElement.selectNodes("film/cím")

Page 68: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 68. oldal

FM116/01

Új ágak beépítése• createNode(típus,név,namespaceURI)

• Az egyes típusokra külön createTípus metódusok léteznek

• createElement példa:• Set ujElem = xmldok.createElement("film")

ujElem.setAttribute("nyelv","német")ujElem.text = "akármi"xmldok.documentElement.childNodes.item(3). appendChild ujElem

• Egyéb lehetőségek• replaceChild, removeChild, insertBefore

Page 69: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 69. oldal

FM116/01

XMLDOMNode (1)• Információ a Node-ról

• hasChildNodes() igaz vagy hamis

• nodeName prefix:név formában

• nodeType és nodeTypeStringNODE_ELEMENT 1NODE_ATTRIBUTE 2NODE_TEXT 3NODE_CDATA_SECTION 4 stb.

• parsed logikai iagz, ha ellenőrzött

• specified attribútumoknál, ha van default vagymeg van adva

• Xml az adott node xml string-ként

Page 70: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 70. oldal

FM116/01

XMLDOMNode (2)• Adat olvasása és írása

• nodeValue

• nodeTypedValue

• Text

• Navigálás az adott Node-ból• parentNode, firstChild, lastChild, previousSibling,

nextSibling, ownerDocument tulajdonságok

• childNodes kollekció

• attributes kollekció révén jutunk el az attribútumokhoz

• definition visz el a sémához

Page 71: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 71. oldal

FM116/01

XSL

• Extensible Stylesheet Language– Olyan, mint a mail-merge, ahol az XSL a

template, és az XML az adat– Hasonlít az ASP ciklushoz és a Tabular Data

Control-hoz– Kétféle modell ötvözhető

• Template-driven model

• Data-driven model

Page 72: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 72. oldal

FM116/01

Egyszerű XML-XSL-HTML példa<?xml version="1.0"?>

<portfolio xmlns:dt="urn:schemas-microsoft-com:datatypes">

<részvény tőzsde="BSE"><név>OTP Bank Rt.</név><jel>OTP</jel><árf dt:dt="number">16000</árf>

</részvény><részvény tőzsde="Nasdaq">

<név>…</név>…

</részvény></portfolio>

Page 73: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 73. oldal

FM116/01

HTML template<HTML>

<BODY><TABLE Border="2">

<TR><TD>Jel</TD><TD>Név</TD><TD>Árfolyam</TD>

</TR><TR>

<TD>…</TD><TD>…</TD><TD>…</TD>

</TR></TABLE>

</BODY></HTML>

Page 74: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 74. oldal

FM116/01

A template "feltöltése" (1)<?xml version="1.0" ?>

<xsl:stylesheet xmlns:xsl="//www.w3.org/TR/WD-xsl">

<xsl:template match="/">

<HTML>

<BODY>

<TABLE Border="2">

<TR>

<TD>Jel</TD>

<TD>Név</TD>

<TD>Árfolyam</TD>

</TR>

Page 75: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 75. oldal

FM116/01

A template "feltöltése" (2) <xsl:for-each select="portfolio/részvény"><TR>

<TD><xsl:value-of select="jel"/></TD><TD><xsl:value-of select="név"/></TD><TD><xsl:value-of select="árf"/></TD>

</TR></xsl:for-each>

</TABLE></BODY>

</HTML></xsl:template></xsl:stylesheet>

Page 76: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 76. oldal

FM116/01

XSL alapszabályok

• <xsl:for-each> tag adja meg az elemhalmazt• <xsl:value-of select="minta">

– Az elemhalmazon belül egy gyereket azonosít

– A select adja meg az XSL pattern-t• A file-könyvtár struktúrához hasonlít, de sima perjellel

• Az elért adat (attribútum, érték) kerül a hívás helyére

• A navigáció az aktuális node-nál indul

Page 77: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 77. oldal

FM116/01

HTML template szabályok• Well-formed HTML (nyitó és záró tagok)• Kisbetű/nagybetű a tagokban fontos

– Legyenek nagybetűsek!

• Minden attribútum idézőjelek vagy aposztrófok között legyen

• HTML és HEAD tag sem maradhat ki• Csak a következő karakter egyedek vannak

– &lt; &gt; &amp; &quot; &apos;

• A scriptek belsejében sem lehetnek más jelek– <SCRIPT><![CDATA[ ide jön a script ] ] ></SCRIPT>

Page 78: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 78. oldal

FM116/01

HTML tag új attribútuma<TR>

<xsl:attribute name="TITLE">

<xsl:value-of select="jel"/> adatai a<xsl:value-of select="@tőzsde"/>-ról származnak

</xsl:attribute>

<TD>…

Csak akkor lehet "TITLE"-t adni, ha még nincs neki.

A <TD> tag előtt kell lennie, hogy a <TR>-re vonatkozzon

Page 79: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 79. oldal

FM116/01

Feltételes template-ek• <TD>

<xsl:value-of select="jel"/><xsl:if test="@tőzsde[.='BSE']">*

</xsl:if></TD>

• <xsl:attribute name="STYLE">color:<xsl:choose>

<xsl:when test="price[. $le$ 25]">red</xsl:when>

<xsl:otherwise>green</xsl:otherwise></xsl:choose></xsl:attribute>

Page 80: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 80. oldal

FM116/01

"for-each" rendezése• <xsl:for-each select="portfolio/részvény"

order-by="árf">

• Lehet csökkenő is• order-by = "-árf"

• Több szempont is megadható• order-by = "mező1; -mező2"

• order-by = "date(mező1);-number(mező2)"

• Ha a select-beli adatra akarunk rendezni:• <xsl:for-each select="portfolio/részvény/név"

order-by="-."

Page 81: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 81. oldal

FM116/01

XSL pattern•Egy egyszerű query nyelvhez hasonlít

• portfolio/részvény az összes ilyen node

• portfolio/*/név példa a joker használatára

• portfolio/részvény/* 3 részvény esetén 9 elemet ad

• portfolio/részvény[jel]/név csak azok, amelyeknek van "jel" node-juk

• portfolio/részvény[jel='OTP']/árf csak az 'OTP' jelű részvények árfolyama jön le

• portfolio/részvény[@tőzsde="BSE"] csak a BSE-n lévő részvények jönnek le

• portfolio/részvény/@tőzsde csak az attribútum értékpár jön vissza

Page 82: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 82. oldal

FM116/01

Internetes alkalmazás rétegei

Page 83: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 83. oldal

FM116/01

Háromrétegű Web architektúra

Page 84: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 84. oldal

FM116/01

Többrétegű architektúra példa

Page 85: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 85. oldal

FM116/01

Thin/Thick-client

• Vékony kliens (Thin-client)– Böngésző-független– Sok forduló a Web szerver és a kliens gép

között

• Vastag kliens (Thick-client)– Böngésző-függő– Látványos Web-lapok– Gyors interaktív funkciók

Page 86: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 86. oldal

FM116/01

Alkalmazásfejlesztési csapat tagjai

• Web fejlesztő

• Programozó

• HTML szerző

• Grafikus

• Web adminisztrátor

• Adatbázis adminisztrátor

Page 87: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 87. oldal

FM116/01

Active Server Pagesalapfogalmak

Page 88: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 88. oldal

FM116/01

ASP környezet• IIS 3.0-tól felfele létezik az ASP.

• Állapotkezelés– A stateless HTTP-vel szemben biztosítja a userenkénti,

alkalmazásonkénti, illetve szerverenkénti állapotkezelést.

• MS ActiveX Data Objects (ADO)– Adatbáziskezelés megvalósítása

• ASP komponensek is használhatók

• Nyelvek: VBScript, JScript, Perl

Page 89: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 89. oldal

FM116/01

ASP file tartalma és nyelve• Az ASP file tartalma:

– Sima szöveg

– HTML

– Script• Kliens oldali• Szerver oldali (<% ……….%>)

• Script nyelvek– VBScript

– Jscript

– Perl

Page 90: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 90. oldal

FM116/01

ASP szintaktikai elemek• Határolójelek

– <…….> a HTML határolójelei

– <%……..%> az ASP Script határolójelei

– Response.Write helyett sima egyenlőségjel• Példa: Ez a lap <% =Now %> -kor lett frissítve.

– Script példa:• <SCRIPT RUNAT=Server | Client

LANGUAGE=VBScript | JavaScript>…… itt van maga a script</SCRIPT>

Page 91: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 91. oldal

FM116/01

Scriptek és HTML vegyítése

• Példa:<% If Time < #12:00:00PM# Then %> Good Morning<% Else %> Good Afternoon<% Endif %>

Page 92: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 92. oldal

FM116/01

Beépített (built-in) objektumok

• Request

• Response

• Application

• Session

• Server

Page 93: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 93. oldal

FM116/01

Request objektum• A böngésző által küldött információ visszanyerésére

szolgál.

• Gyűjtemények– QueryString A kérdőjel utáni paraméterek– Form A kérdőjel utáni paraméterek– Cookies Adott változó tartalma

• Példa: Request.Cookies("Dolgozo")("Nev")

– ClientCertificate (Kulcs[almező])• Secure Sockets Layer (SSL) használatakor https lesz a sima http

helyett

Page 94: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 94. oldal

FM116/01

HTML Form készítése• 3 lehetőség van

– Statikus .HTM egy formCX-szel adatot ad át egy .ASP-nek

– .ASP küld adatot egy másik .ASP-nek– .ASP küld adatot önmagának (self-posting)

• Megvalósítás:– <Form Method=Post Action=kakukk.asp>

• Begyűjti az adatokat és a SUBMIT gombra elküldi a kakukk.asp-nek.

Page 95: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 95. oldal

FM116/01

Az átküldött adatok elérése• Példák

– X = Request.Form("mezőnév")– X = Request.Form("mezőnév")(n)

• Ha ugyanazzal a mezőnévvel több textbox is van• Az index nélkül vesszőkkel elválasztott string jön

– Request.Form("mezőnév").Count• Ezzel lehet megtudni, hogy hány azonos nevű van

– IsEmpty(Request("mezőnév")• Ez dönti el, hogy van-e adat a mezőben.• Self-posting-nál így dönthető el, hogy első hívás vagy

önhívás történt-e

Page 96: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 96. oldal

FM116/01

QueryString gyűjtemény• QUERY_STRING szerver változóba kerül a

kérdőjelet követő rész– Request.QueryString("mezőnév")

• A sima Request helyett akkor kell, ha nem form-ból jött ide a felhasználó– pl. http://www.x.y/kakukk.asp?kutya=d&m=n

• REQUEST_METHOD nevű szerver változó– X=Request.ServerVariables

("REQUEST_METHOD")• "POST" vagy "GET" lesz az X értéke

Page 97: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 97. oldal

FM116/01

Response objektum (1)

• Információ küldése a böngészőnek• Tulajdonságadatok

– Buffer• True esetén visszatartja a küldést, amíg az ASP le nem

fut.

– Expires• Meddig érvényes a lap a Cache-ben percekben.

– ExpiresAbsolute• Meddig érvényes a lap abszolút időben mérve.

Page 98: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 98. oldal

FM116/01

Response objektum (2)• Metódusok

– Write• Sima egyenlőségjellel helyettesíthető

– Redirect• Buffer=True esetén átszállhatunk egy másik ASP-re

• Response.Redirect "http://www.x.y/h.asp"

– End• Pufferezett esetben ekkor küldi el a böngészőnek

– Clear• Ha mégse küldjük el, akkor az End helyett ez jön.

Page 99: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 99. oldal

FM116/01

Response objektum (3)• Cookies gyűjtemény

– Cookie: a felhasználó gépén tárolt adat.– A böngészőben értesítés kérhető, sőt le is tiltható a

használata.– Példa:

• Response.Cookies("Kakukk") = "Valami"Response.Cookies("Dolgozo")("Nev") = "Kovács"

– Tulajdonságok• Secure

• Haskeys (True vagy False)

Page 100: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 100. oldal

FM116/01

Application objektum• Metódusok

• Lock és Unlock az objektum zárolására

• Események• Application_OnStart és Application_OnEnd• A Global.Asa-ban kell ezeket deklarálni

• Változók• Application("Macska") = "Nokedli"

X = Application("Macska")

• Gyűjtemények• Contents Az összes változó• StaticObjects <OBJECT>-en belüli obj-ok

Page 101: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 101. oldal

FM116/01

Session objektum• Az állapot nélküli HTTP feloldására

• "Vásárlókosár" jellegű alkalmazás készíthető• A Global.Asa kezeli

• Példa:• Session("KakukkValt") = érték

X = Session("KakukkValt")

• Tulajdonságok• SessionID (long) és TimeOut (percek)

• Metódus• Abandon Kierőszakolja a Session végét.

Page 102: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 102. oldal

FM116/01

Események

• Application_OnStart• Akkor, amikor az első user az első session-t nyitja.

• Application_OnEnd• Akkor, amikor leállítják a Web szervert.

• Session_OnStart• Minden usernél egyszer az elején fellép (Form_Load

szerű). Itt lehet számolni a látogatókat.

• Session_OnEnd• Amikor egy adott user elmegy.

Page 103: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 103. oldal

FM116/01

Változók hatáskörei• Dim Kakukk

– Az adat elvész, amikor a user lemegy a lapról.• Session("Kakukk")

– Annyi példány lesz, ahány user éppen benn van• Application("Kakukk")

– Egy közös példány lesz. (Variant)– Ha többen akarják egyszerre módosítani:

• Application.LockApplication("Adat") = Application("Adat") + 1Application.Unlock

Page 104: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 104. oldal

FM116/01

Server objektum• A Web szerverrel való kapcsolattartásra• Tulajdonság

– ScriptTimeout

• Metódusok– CreateObject

• Ezzel lehet az ActiveX komponenseket a szerveroldalon felhasználni. (ProgID-t kell átadni.)

– HTMLEncode– MapPath– URLEncode

Page 105: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 105. oldal

FM116/01

Request.ServerVariables• A szerverről, illetve a böngészőről ad infot.

– QUERY_STRING– REMOTE_ADDR

• A request-et kiadó host gép IP-címe.

– SERVER_PORT• Az a port szám, ahova a request-et küldtük.

– SERVER_SOFTWARE• Név és verzió

– URL• Az URL cím alaprésze

Page 106: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 106. oldal

FM116/01

ActiveX szerver komponensek

• COM-ot tudó OLE Automation szerverek• Elérik a file rendszert és a szerver hálózatot

is (A VBScript és a Jscript nem éri el!)• DLL-ként vagy EXE-ként működnek• VB, C, C++, Cobol, Pascal, Java, stb.• Jobb, mint a CGI

– Egy példány szolgálhatja ki az összes felhasználót

Page 107: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 107. oldal

FM116/01

Szerveroldali komponensek

• ADO Command, Connection, Recordset

• Ad Rotator

• Browser Capabilities

• Content Linking

• Index Server

• Dictionary

• Filesystem Object

Page 108: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 108. oldal

FM116/01

Web alkalmazás• Az adott Web site-on található .asp, .htm és egyéb

file-ok összessége.• A virtuális gyökérben kell egy Global.Asa• Analógia:

– .EXE ===> .ASA.DLL ===> .ASP és .HTM

– .ASP és .HTM több alkalmazás része is lehet

• Application objektum =globális tárolóhely– Alkalmazások közötti adatcserére nem jó.

Page 109: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 109. oldal

FM116/01

Az ASP.NET alapjai

Page 110: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 110. oldal

FM116/01

A .NET keretrendszer

• Nyelvfüggetlen futtatórendszer (Common Language Runtime – CLR)

• Alaposztályok és könyvtárak

• Adatkezelés (ADO.NET)

• Felhasználói interfész– Web Forms– Windows Forms

• Web szolgáltatások

Page 111: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 111. oldal

FM116/01

Az ASP.NET újításai (1)• Sokféle nyelvet támogat, nemcsak script

nyelveket• Lefordított kódot használ• A teljes keretrendszer elérhető• Intelligens szerver vezérlőelemeket tartalmaz• Web szolgáltatások építhetők• Kibővített engedélyezési rendszer működik

benne

Page 112: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 112. oldal

FM116/01

Az ASP.NET újításai (2)

• Többrétegű skálázhatóság

• Munkamenet (session) kezelés sütik (cookies) nélküli böngészőknél

• Sokféle konfigurálási lehetőség

• Egyszerű telepítés

Page 113: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 113. oldal

FM116/01

Web űrlap (Web Form)• .ASPX kiterjesztésű file• @Page direktívát tartalmaz:

• <%@ Page Language=Vb %>

• Szerveroldali űrlappal rendelkezik:• <Form runat=„server”>

</Form>

• Egy ASPX lap a System.Web.UI.Page osztályból öröklődő dinamikus osztály

• Az ASPX lapon lévő vezérlőelemek objektumok

Page 114: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 114. oldal

FM116/01

Szerver vezérlőelemek• A szerver oldalon programozható objektumok

• Tulajdonságok, metódusok, események

• Az események a kliensen következnek be, de a szerveren fut le az eseményvezérlő metódus

• Runat=„server” attribútummal rendelkeznek

• Böngészőfüggő HTML-t küldenek

• Típusai:– Szerveroldali HTML vezérlőelemek– Web vezérlőelemek

Page 115: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 115. oldal

FM116/01

Szerveroldali HTML vezérlőelem

• Megegyezik a megfelelő HTML elemmel• Runat=„server” attribútumot tartalmaz• Egyedi „ID” tag van benne

• A System.Web.UI.HtmlControls névteret használja

• Well-formed XML szintaktikát kell használni• <tag attr=„érték” runat=„server”>….</tag> vagy• <tag attr=„érték” runat=„server”/>

Page 116: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 116. oldal

FM116/01

Web vezérlőelem• Intelligens komponensként funkcionálnak• Az „asp” névtérben működő tagok

• <asp:textbox id=„kakukk” runat=„server”/>

• A System.Web.UI.Webcontrols névteret használja• Ez van leképezve az „asp:” tagprefixre

• Négyféle típusba sorolható:• Belső (beépített, intrinsic)• Gazdag (rich)• Ellenőrzés (validation)• Lista

Page 117: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 117. oldal

FM116/01

Hogyan működik egy Web űrlap?

• Method=„post” Action=„ugyanez a lap”

• Az űrlap egyedi „id” és „name” attribútumot kap

• Mindegyik vezérlőelemhez hozzárendelődik egy „value” tag

• Rejtett vezérlőelem gondoskodik az állapot megőrzéséről (_VIEWSTATE néven)

• Kikapcsolható az enableviewstate=„false” megadásával bármelyik vezérlőelemnél

Page 118: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 118. oldal

FM116/01

Eseményvezérlő eljárás írása• Kód deklarációs blokk vagy mögöttes kód

• <SCRIPT Language=„VB” Runat=„server”> Sub Valami(s As Object, e As EventArgs) …. End Sub</SCRIPT>

• Code-behind class file

• Összekapcsolás a szerver vezérlőelemnél:• <tag runat=„server” onserverclick=„Valami” />

• A metódus nevét kell leírni, és nem egy függvényhívást, mint az ASP-nél.

Page 119: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 119. oldal

FM116/01

Page események sorrendje• Page_Init

• Page_Load• Ahányszor csak meghívják az ASPX lapot

• Change típusú események• AutoPostBack nélkül

• Click esemény és az AutoPostback-es Change események

• Vagyis az az esemény, amitől az űrlap elindult

• Page_Unload

Page 120: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 120. oldal

FM116/01

Page.IsPostback

• Ezzel tesztelhető, hogy első meghívás vagy újrahívás történt:

• If Not Page.IsPostBack Then ‘ Első meghívásElse ‘ ÚjrahívásEnd If

Page 121: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 121. oldal

FM116/01

Belső (instrinsic) Web vezérlőelem

• Az eredeti HTML vezérlőelemek helyett

• Standard névkonvenciót használnak• <input type=xxx> helyett

• Közös tulajdonsághalmaz• Pl. Text, BackColor, ForeColor mindegyiknél

• A Windows-nál megszokott specifikus nevek• Pl. Checked az asp:Checkbox-nál• SelectedItem az asp:ListBox-nál

• Böngészőfüggő kódot generál

Page 122: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 122. oldal

FM116/01

A Web vezérlőelemek típusai

<asp:textbox> <input type=text>

<asp:button> <input type=button>

<asp:imagebutton> <input type=image>

<asp:checkbox> <input type=checkbox>

<asp:radiobutton> <input type=radiobutton>

<asp:listbox> <select size=„5”> </select>

<asp:dropdownlist> <select> </select>

<asp:hyperlink> <a href=„..”> </a>

<asp:image> <img src=„…”>

<asp:label> <span>…</span>

<asp:panel> <div>…</div>

<asp:table> <table>…</table>

Page 123: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 123. oldal

FM116/01

Web vezérlőelemek eseménykezelése• Csak szerveroldali eseményekre reagál

• Click-típusú események

• Listadobozoknál Change-típusúak (pl. SelectionChanged)

• esemény=„metódusnév”• Pl. onclick=„valami”

• Itt az onclick jelenti azt, amit a HTML vezérlőelemnél az onserverclick jelentett

• autoPostBack tulajdonság• Ha true, akkor egy change típusú esemény is azonnal a

szerverhez fordul

Page 124: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 124. oldal

FM116/01

Adatellenőrző vezérlőelemek• Típusok:

– RequiredFieldValidator– CompareValidator– RangeValidator– RegularExpressionValidator– CustomValidator

• Ellenőrzés helye– Kliens (Javascript kezelő böngészőknél)– Szerver (a többi böngészőnél)

Page 125: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 125. oldal

FM116/01

Közös tulajdonságok• controlToValidate="Ellenőrzendő control ID-je"• errormessage="Hibaüzenet szövege"• display="dynamic" vagy "static" vagy "none"

– static=fix helyet foglal el a képernyőn– dynamic=ha nincs hiba, akkor nem foglal el helyet

• enableClientScript="true" vagy "false"

Page 126: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 126. oldal

FM116/01

CompareValidator

• Összehasonlítás egy konstanssal vagy egy másik vezérlőelem értékével– ValueToCompare="konstans" vagy

ControlToCompare="másik vezérlőelem ID-je"– Type="String" | "Integer" | "Date" |

"Double" | "Currency"– Operator="Equal" | "NotEqual" | "GreaterThan" |

"GreaterThanEqual" |LessThan" |"LessThanEqual" | "DataTypeCheck"

Page 127: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 127. oldal

FM116/01

RangeValidator

• Értéktartomány ellenőrzés– MinimumValue="konstans"– MaximumValue="konstans"– Type="String" | "Integer" | "Date" |

"Double" | "Currency"

Page 128: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 128. oldal

FM116/01

ValidationSummary

• Page.isValid="true" esetén jelenik meg

• Az adott lap összes hibáját kiírja

• Az eredeti ellenőrző vezérlőelemek helyén ilyenkor "*" jel íratható ki– <asp:xxValidator …>*</asp:xxValidator>

Page 129: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 129. oldal

FM116/01

RegularExpressionValidator

• Minta alapján történő ellenőrzés– ValidationExpression="formátum"– Példa adószámra:

• ValidationExpression="[0-9]{8}-[0-9]-[0-9]{2}"

Page 130: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 130. oldal

FM116/01

Az ADO.NET alapjai

Page 131: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 131. oldal

FM116/01

ADO .NET

Page 132: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 132. oldal

FM116/01

Connection objektum• Kétféle típusa van:

• SQLConnection (SQLServer 7.0, 2000)• OLEDBConnection (a többi esetén)

• ConnectionString (SQLConnectionnél)• Data Source=.. vagy Server=.. ;

Initial Catalog=.. vagy Database=.. ;Integrated Security= vagy Trusted_Connection=sspi;vagy User ID=.. Pwd=..

• Connection String (OLEDBConnectionnél)• Provider=..; a többi ugyanaz• ODBC-t nem támogat (külön ODBC .NET provider kell)

Page 133: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 133. oldal

FM116/01

Connection példa

Dim conDB = new SQLConnection()

conDB.ConnectionString="Integrated Security=SSPI;Initial Catalog=northwind"

conDB.open()

• Az open nem kötelező Dataset esetén

Page 134: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 134. oldal

FM116/01

Command objektum• Kétféle típusa van:

• SQLCommand (SQLConnection-nél)

• OLEDBCommand (OLEDBConnection-nél)

• Konstruktor paraméterek• CommandText (Maga az SQL mondat)

• Connection (Az xxxConnection objektum)

• Transaction (A Transaction objektum)

• Egyéb tulajdonság• CommandType=CommandType.StoredProcedure |

.TableDirect | .Text (default)

• Parameters

Page 135: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 135. oldal

FM116/01

Command objektum metódusai• ExecuteScalar

• Az eredményhalmaz első sorának első oszlopát adja

• ExecuteReader• DataReader (Sql vagy OleDb) objektumot szolgáltat

• ExecuteXmlReader• XmlReader objektumot szolgáltat

• ExecuteNonQuery• Végrehajtja a megadott DDL vagy DML utasítást

• Visszaadja az érintett sorok számát

• Output paraméterek feltöltődnek

Page 136: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 136. oldal

FM116/01

SqlParameter objektum

• Konstruktor paraméterek:• ParameterName (pl. "@SzlaSzam")

• SqlDbType (pl. SqlDbType.Int)

• Size (a méret byte-ban, pl. 4)

• Egyéb tulajdonságok• Direction = ParameterDirection.Input | Output |

InputOutput | ReturnValue

• Value (A paraméter értéke írható és olvasható)

• SourceColumn (Dataset-nél az eredeti oszlop neve)

Page 137: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 137. oldal

FM116/01

SqlCommand paraméterei• Paraméter hozzáadása SQLCommand-hoz

– cmdSqlCom.Parameters.Add(Para1)• ahol Para1 egy SqlParameter objektum

• Paraméterérték írása, olvasása:– cmdSqlCom.Parameters("@Szla").Value="11"– Az Executexxx után output paraméterre is

• A visszaadott érték átvétele– cmdS.Parameters("@RETURN_VALUE").

Value

Page 138: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 138. oldal

FM116/01

DataReader objektum• Két típusa van:

• SqlDataReader• OleDbDataReader

• Az xxCommand.ExecuteReader hozza létre• Saját konstruktorral nem lehet létrehozni!

• Csak előrefele olvasható adathalmaz• Nyitott xxConnection kell hozzá

• A végén le kell zárni a Readert és a Connection-t

• Memóriakímélő

Page 139: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 139. oldal

FM116/01

DataReader tulajdonságok és metódusok

• Read metódus• A következő sor beolvasása• "False"-t ad vissza, ha nincs több rekord (EOF)

• Item (default property)• dr.Item("SzlaSzam").Value vagy dr(1).Value

• Object-et ad vissza, ezért gyakran CType kell

• GetValues (tömböt vár és tölt fel)• GetOrdinal("SzlaSzam")• IsDbNull(i)

• "true", ha az oszlop DbNull

Page 140: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 140. oldal

FM116/01

DataReader példaDim cmdPartner As SqlCommand=new SqlCommand( "SELECT PartAzon,PartNev FROM Partner",conDB)conDB.open()Dim rdrPartner As SqlDataReaderrdrPartner=cmdPartner.ExecuteReader()Do While rdrPartner.Read() ListBox1.Items.Add(rdrPartner.GetInt16(0) &

vbTab & _ rdrPartner.getString(1))

LooprdrPartner.Close()I = rdrPartner.RecordsAffected ' -1-et ad, mert

SELECTconDb.Close()

Page 141: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 141. oldal

FM116/01

Több Recordset kezelése

• Tárolt eljárás több eredményhalmazt is adhat vissza, ha több SELECT van benne

• rdrPartner.NextResult() megy rá a következő rekordhalmazra

• A RecordsAffected összeadja az INSERT, UPDATE, DELETE által érintett rekordokat

Page 142: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 142. oldal

FM116/01

Tranzakciókezelés ADO .NET-ben• SqlConnection.BeginTransaction adja vissza az

SqlTransaction objektumot.• A tranzakció hatálya alá tartozó Command

objektumoknál• cmdPartner.TransAction = tranObj

• tranObj.IsolationLevel = IsolationLevel.Serializable

• Tranzakció metódusai• tranObj.Commit()

• tranObj.Save()

• tranObj.Rollback()

Page 143: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 143. oldal

FM116/01

Dataset• Memóriában tárolt relációs adathalmaz

• Adatbázis kapcsolat nélkül működik

• Alaposztályok– System.Data.DataSet

– System.Data.DataTable

– System.Data.DataColumn

– System.Data.Constraint

– System.Data.DatRelation

– System.Data.DataRow

– System.Data.DataView

Page 144: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 144. oldal

FM116/01

A DataSet osztály objektummodellje

Page 145: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 145. oldal

FM116/01

DataSet létrehozása és feltöltése

1. Programozott módon

2. A Visual Studio .NET grafikus eszközeivel

3. XML segítségével

4. DataAdapter használatával

Page 146: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 146. oldal

FM116/01

DataSet programozott létrehozása• Új DataSet objektum létrehozása

– Dim dsSzamla As New DataSet("Szla")• Új DataTable objektum létrehozása és hozzákapcsolása a

DataSet objektumhoz– Dim dtPartner As New DataTable =

dsSzamla.Tables.Add("Partner")• Ha nem adunk meg táblanevet, akkor "Table0,1,2" nevet ad

• Új DataColumn objektum hozzáadása a táblához– Dim colPartAzon As New DataColumn =

dtPartner.Columns.Add("PartAzon",GetType(System.Int32))

Page 147: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 147. oldal

FM116/01

DataTable tulajdonságok• Columns

• A tábla oszlopainak kollekciója (DataColumnCollection)

• Constraints• A tábla Constrainst kollekciója (ConstraintCollection)• ForeignKeyConstraint vagy UniqueKeyConstraint osztály

• PrimaryKey• DataColumn() tömbként kell megadni• dtPartner.PrimaryKey=New DataColumn() _

{dtPartner.Column("PartAzon")}

• Rows• Az adatsorok kollekciója

Page 148: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 148. oldal

FM116/01

DataColumn tulajdonságok• AllowDbNull

• NULL constraints alkalmazása

• Unique• UNIQUE constraints alkalmazása

• AutoIncrement• colPartAzon.AutoIncrement = True

colPartAzon.AutoIncrementSeed = 1000 'Innen indulcolPartAzon.AutoIncrementStep = 1 ' Egyesével megy

• SqlTypes.SqlGuid alkalmazása biztonságosabb, ha adatbázishoz nem kapcsolt környezetet használunk

• Expression• Számított kifejezés használata

Page 149: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 149. oldal

FM116/01

DataRelation objektum• Két DataTable összekapcsolása DataColumn objektumok

mentén• Rel1 = dsSzamla.Relations.Add("FK_Szamla_Partner",

_dtPartner.Columns("PartAzon"), _dtSzamla.Columns("PartAzon"),True)• "True" jelentése: constraint-ek felépítését kérjük

• A kapcsolt táblák elősegítik a navigálást• DataRow.GetChildRows metódus pl. az adott partnerhez tartozó

számlasorokat adja vissza DataRow() tömbként

• Törlési szabály beállítása• Rel1.DeleteRule = Rule.Cascade | Rule.SetNull |

Rule.SetDefault | Rule.None

Page 150: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 150. oldal

FM116/01

DataException események• ConstraintException

• Kísérlet egy éles constraint megsértésére

• DuplicateNameException• Valamelyik Add metódus duplikált elemet hozna létre

• InvalidConstraintException• Rossz reláció létrehozása vagy elérése

• NoNullAllowedException• Egy AllowDbNull=False mezőben NULL-t akarunk írni

Page 151: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 151. oldal

FM116/01

Új sorok beillesztése a táblába• DataRow objektum létrehozása

• drPartner = dtPartner.NewRow()

• DataRow objektum feltöltése adatokkal• drPartner("PartNev") = "Kakukk Kft."

drPartner("PartVaros") = "Budapest"….vagy

• drPartner.ItemArray = new Object() {"Kakukk Kft.","Bp"…}

• DataRow hozzáadása a DataTable objektumhoz• dtPartner.Rows.Add(drPartner)

Page 152: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 152. oldal

FM116/01

Adott sor megkeresése a táblában• A DataTable.Rows kollekció segítségével

• DataRowCollection típusú objektumot ad vissza

• Item tulajdonság• dtPartner.Rows(3) a negyedik sort adja vissza

• Count tulajdonság a sorok számát adja

• A Find metódus az elsődleges kulcs alapján keres• Dim Kulcs As Object

Dim Sor As DataRowKulcs = 214Sor = dtPartner.Find(Kulcs)If Sor Is Nothing Then ' Nincs meg a keresett rekord

Page 153: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 153. oldal

FM116/01

Meglévő sorok módosítása a táblában

• DataRow.BeginEdit metódussal kezdődik• Kikapcsolja a constraint események kezelését

• DataRow.EndEdit vagy .CancelEdit metódussal zárjuk le a módosítást

• Visszakapcsolja az eseménykezelést

• Mintapélda:• ' Behozzuk a keresett sort, például:

drPartner = dtPartner.Rows(7)drPartner.BeginEdit()drPartner("PartNev") = "Teszt Kft."drPartner.EndEdit()

Page 154: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 154. oldal

FM116/01

Sorok törlése a táblából

• Fizikai törlés• dtPartner.Rows.RemoveAt(5) 'Törli a 6. sort

• drPartner = dtPartner.Rows(5)dtPartner.Rows.Remove(drPartner) ' Ez is törli a 6. sort

• Logikai törlés• drPartner.Delete

• A drPartner.RowState értékét RowState.Deleted-re állítja

Page 155: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 155. oldal

FM116/01

Adatellenőrzés menete• DataTable események

• ColumnChanging (oszlop módosítása előtt)• ColumnChanged (oszlop módosítását követően)• RowChanging (minden oszlop módosítását követően)• RowChanged (minden RowChanging után)• RowDeleting (akkor, amikor törlésre jelölünk egy sort)• RowDeleted (a sor törlését követően)

• BeginEdit, EndEdit esetén• Csak egyszer lép fel a RowChanging és a RowChanged

• Az események kezeléséhez• WithEvents opcióval kell deklarálni a DataTable-t• Throw-val lehet megakadályozni a módosítást

Page 156: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 156. oldal

FM116/01

RowState és RowVersion• DataRow.RowState lehetséges értékei:

• Deleted = a sort törölték DataRow.Delete-tel

• Modified = módosították, de AcceptChanges még nem volt

• Added = új sort vettek fel, de AcceptChanges még nem volt

• Unchanged = a legutolsó AcceptChanges óta nem módosult

• Detached = a DataRow nincs DataTable-hez kapcsolva

• DataRow.RowVersion lehetséges értékei:• Current = az éppen aktuális értékek

• Default = az alapértelmezett értékek

• Original = az eredeti (módosítás előtti) értékek

• Proposed = módosítás közbeni (még nem elfogadott) értékek

• DataRow("PartAzon",DataRowVersion.Original)• DataRow.HasVersion-nel lekérdezhető, hogy van-e olyan verzió

Page 157: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 157. oldal

FM116/01

A módosítások véglegesítése

• AcceptChanges metódus• DataRow, DataTable vagy DataSet szinten is

kiadható

• Az "Original" értékek felveszik a "Current" értékeket

• A RowState értéke Unchanged lesz

• A RowError információk törlődnek

• A DataTable.HasErrors értéke false lesz

• RejectChanges metódus

Page 158: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 158. oldal

FM116/01

DataView objektum• Az SQL View szerepét tölti be DataSet-nél, DE!:

• A DataView nem tekinthető DataTable-nek• Csak egy DataTable-re alapulhat (join-ok nem lehetnek)• Nem hagyhatók ki oszlopok az eredményből

• Tipikusan rendezésre és szűrésre alkalmas• Dim dv As New DataView(dsSzamla.Tables("Partner"))

dv.Sort = "PartNev"dv.Filter = "Irszam = '5600'"

• A felhasználói interfészen használjuk• Így pl. több vezérlőelemet is hozzákapcsolhatunk ugyanahhoz a

DataTable objektumhoz.

• DataTable.DefaultView használata

Page 159: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 159. oldal

FM116/01

DataAdapter objektum• Kétféle formája van:

– SqlDataAdapter– OleDbDataAdapter

• Hídnak tekinthető az adatbázis és a DataSet egy adott DataTable objektuma között– Fill metódus tölti fel a DataTable-t az adatbázisból– Update metódus viszi vissza a módosításokat a DataTable-

ből az adatbázisba

• Mire alkalmas, és mire nem– Jó: Tábla másolata egy közbenső rétegben– Rossz: Kereső funkció eredménye egy Web site-on

Page 160: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 160. oldal

FM116/01

DataAdapter létrehozása• Két módszer kínálkozik

• Data Adapter Configuration Wizard használata• Saját kód készítése

• DataAdapter felépítése – egyelőre csak olvasásra• Dim daPartner As SqlDataAdapter

Dim cnSzamla As SqlConnection("connection string adatok")Dim cmdPartner As New SqlCommand( _ "SELECT * FROM Partner",cnSzamla)daPartner.SelectCommand = cmdPartner

• DataSet feltöltése DataAdapter-rel• intSorok = daPartner.Fill(dsSzamla | dtPartner |

dsSzamla, "Partner")

Page 161: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 161. oldal

FM116/01

Módosítások visszaírása az adatbázisba

• DataAdapter.Update(Para1) metódus meghívása• A Para1 lehet DataSet, DataTable vagy DataRow() tömb

• A megfelelő SQL parancsok végrehajtása– InsertCommand

– UpdateCommand

– DeleteCommand

• A kapcsolatot a DataTable-vel a megfelelő SQLParameter objektumok hozzák létre

Page 162: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 162. oldal

FM116/01

Mintapélda módosításraDim cmdModos As New SqlCommand("UPDATE Partner SET" & _

"PartAzon=@ID, PartNev=@Nev WHERE PartAzon=@EredID", _

cnSzamla)

cmdModos.Parameters.Add(New SqlParameter("@ID", _ SqlDbType.Int32, 4, ParameterDirection.Input, False, _ 0, 0, "PartAzon", DataRowVersion.Current, Nothing))

cmdModos.Parameters.Add(New SqlParameter("@Nev", _ SqlDbType.Char, 30, ParameterDirection.Input, False, _ 0, 0, "PartNev", DataRowVersion.Current, Nothing))

cmdModos.Parameters.Add(New SqlParameter("@EredID", _ SqlDbType.Int32, 4, ParameterDirection.Input, False, _ 0, 0, "PartAzon", DataRowVersion.Original, Nothing))

Page 163: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 163. oldal

FM116/01

DataSet módosítások kezelése• DataTable.GetChanges metódus

• Előállít egy újabb DataTable-t, amibe csak az adott módosítások (pl. csak a törlések) kerülnek

• DataSet.GetChanges is hasonlóan működik

• DataTable.Select metódus• Szűrő, rendezés és RowState alapján kijelölt sorokat egy

DataRow() tömbbe rakja

• Nem másolás(!), hanem pointerek kialakítása

• DataSet.Merge metódus• Az adott DataSet-hez hozzárakja egy másik DataSet vagy

DataTable tartalmát

Page 164: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 164. oldal

FM116/01

Konfliktusok kezelése• Az optimista zárolás miatt konfliktusok

keletkezhetnek• Konfliktusok detektálása• Konfliktusok feloldása

1. "Az utolsó győz" elv alapján

2. A konfliktust okozó adatok a DataSet-ben maradnak

3. A helyi DataSet-ben visszaállunk az eredeti adatra

4. A helyi DataSet-be betöltjük a legutolsó adatokat

Page 165: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 165. oldal

FM116/01

DataSet és az XML• XSD Schema

– Az XML dokumentum struktúráját írja le– Az adatbázis szerkezeti leírásához hasonló

• Adattáblák és a táblák közötti kapcsolatok• Adatmezők neve és adattípusa• Kényszerek (pl. elsődleges kulcs, egyedi kulcs, stb.)

• Erős típusú DataSet– Sémainformációval rendelkező DataSet– A séma segíti az adatellenőrzést– Hatékonyabb az adatimport és az adatexport

Page 166: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 166. oldal

FM116/01

XSD séma alapelemei: element• <xs:element name="PartAz" type="xs:integer" />

– Egyszerű vagy komplex adat leírására– Kisbetű-nagybetű megadására érzékeny– Primitív XML adattípusok

• string, Boolean, float, double, decimal, dateTime, time, date, anyURI

– Származtatott XML adattípusok• integer, long, short, int, byte, positiveInteger, unsignedLong

– Példa adatfeltöltésre• <PartAz>2547</PartAz> ' Jó példa• <PartAz>XC35</PartAz> ' Rossz példa

Page 167: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 167. oldal

FM116/01

XSD séma alapelemei: attribute

• <xs:attribute name="PartPri" type="xs:number"/>– Csak egyszerű adat leírására jó– Alapértelmezésbeli érték megadható– Az attribútumok sorrendje tetszőleges, míg az

elemek sorrendje a séma szerinti kell hogy legyen

Page 168: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 168. oldal

FM116/01

XSD séma alapelemei: simpleType

• Létrehozás:– <xs:simpleType name="ketJegyuSzam">

<xs:restriction base="xs:positiveInteger"> <xs:maxInclusive value="99" /></xs:restriction>

</xs:simpleType>

• Felhasználás:– <xs:element name="Db" type="ketJegyuSzam" />

• Tipikus facet elemek:– length, maxLength, minLength, maxExclusive, pattern

Page 169: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 169. oldal

FM116/01

XSD séma alapelemei: complexType

• Létrehozás:– <xs:complexType name="Cim">

<xs:sequence> <xs:element name="Varos" type="xs:string" /> <xs:element name="UtcaHsz" type="xs:string" /> <xs:element name="Irsz" type="xs:string" /> </xs:sequence></xs:complexType>

• Felhasználás:– <xs:element name="SzlaCim" type="Cim" />

• A komplex típusok egymásba ágyazhatók

Page 170: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 170. oldal

FM116/01

XSD séma alapelemei: group• Példa:

• <xs:group name="RendFej"> <xs:sequence> <xs:element name="VevoNev" type="xs:string" /> <xs:element name="RendSzam" type="xs:number" /> <xs:element name="RendDat" type="xs:date" /> </xs:sequence></xs:group>

• Csoportok típusai:• sequence kötött sorrendben minden elem kötelező• choice a felsoroltak közül csak az egyik kell• all nulla vagy több elem bármilyen sorrendben

Page 171: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 171. oldal

FM116/01

XSD séma adatkiegészítése• A névtartományt meg kell adni:

• xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"

• Elsődleges kulcs megadása• <xs:key name="pkPartner" msdata:PrimaryKey="true">

<xs:selector xpath=".//Partner"/> <xs:field xpath="PartAzon"/></xs:key>

• Egyedi kulcs megadása• <xs:unique name="Adoszam"> ….stb.

• Idegen kulcs megadása• <xs:keyref name="fkRendPart" refer="pkPartner"> … stb.

Page 172: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 172. oldal

FM116/01

XSD betöltése egy DataSet-be• Mintapélda:

• DS1 = new DataSet()DS1.ReadXmlSchema("C:\Proba\Kakukk.Xsd")

• Közvetlen filenév helyett használható:– StreamReader, TextReader, XmlReader objektum is

• Metaadatok lekérdezhetők ezután:• Ds.Tables tulajdonság, Ds.Relations tulajdonság• Tables(index vagy név).Columns(index).ColumnName• Tables(index vagy név).Columns(index).DataType

• Az InferSchema metódussal XML-ből is felépíti az adatszerkezetet

Page 173: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 173. oldal

FM116/01

XML adatok betöltése a DataSet-be• Ds.ReadXml(XmlObjektum,XmlReadMode)

– Az XmlObjektum filenév, stream, text vagy Xmlreader– Az XmlReadMode lehetséges értékei:

• ReadSchema Az inline séma és az adatok együttesen

• IgnoreSchema Inline séma nélkül csak az adatok• InferSchema Az adatok alapján épül fel a séma is• DiffGram Berakja a DiffGram-ot a DataSet-be• Fragment SQLServer-ből generált XML-nél

• A sémának nem megfelelő adatok kimaradnak

Page 174: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 174. oldal

FM116/01

XML írása DataSet-ből

• Ds.WriteXmlSchema(XmlObjektum)• Csak a sémainformációt írja ki egy file-ba vagy reader-re

• Ds.GetXmlSchema()• String-ként írja ki a sémainformációt

• Ds.WriteXml(XmlObjektum,XmlWriteMode)• IgnoreSchema Csak az adatokat írja ki az XML-

be• WriteSchema Inline sémát és az adatokat írja ki• DiffGram Diffgram-ot ír eredeti és aktuális

adattal

Page 175: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 175. oldal

FM116/01

DiffGram• Csak a DataSet változásait írja ki

• Disconnected DataSet esetén pont ez kell

• DiffGram névtér:• xmlns:diffgr="urn:schemas-microsoft-com:xml:diffgram-v1"

• Három részre osztható:• Aktuális adat a sémának megfelelő elemekkel, majd ezután• <diffgr:before> elemben az eredeti tartalom• <diffgr:errors> elemben a fellépett hibák

• DiffGram attribútumok (annotációk)• diffgr:hasChanges="modified | inserted | descent"• diffgr:id = sorok egyedi azonosítása az összekapcsolás miatt

Page 176: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 176. oldal

FM116/01

Adatok megjelenítése a Web űrlapon

Page 177: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 177. oldal

FM116/01

Adatok vezérlőelemhez kapcsolása• Szintaktikai alakja

1. <tagprefix:tagnév attr1=<%# Adatkötési kifejezés %> runat="server">

2. sima szöveg <%# Adatkötési kifejezés %>

• A DataBind() metódus hozza létre a kapcsolatot

– Page.DataBind()• Az adott lap összes adatkötését élesíti

– ctlValami.DataBind()• Csak az adott vezérlőelem adatkötéseire vonatkozik

Page 178: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 178. oldal

FM116/01

Adatkötési kifejezés lehetséges formái

• Template vezérlőelemeknél (DataGrid, DataList, Repeater)– Container.DataItem("mezőnév")

• Csak akkor egyszerű, ha a mező string-et ad, egyébként a String.Format segítségével át kell alakítani

– DataBinder.Eval(Container.DataItem,"mezőnév", "formátum")

• Futáskori kötéssel működik

• Szerver vezérlőelemek között– Az adott vezérlőelem valamelyik tulajdonsága

• <asp:label text=<%# lstOrszag.SelectedItem.Text %> runat="server">

Page 179: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 179. oldal

FM116/01

DataGrid vezérlőelem• Táblázatos adat megjelenítése

• Rendezhető, editálható elemek

• Bármelyik Collection osztály, ami IEnumerable

• System.Data.DataView, System.Collections.ArrayList, stb.

• A vezérlőelem létrehozása• <asp:DataGrid id="dgPartner" runat="server">

• Hozzákapcsolás egy adatforráshoz• dgPartner.DataSource=ds.Tables("Partner").DefaultView

dgPartner.DataBind()

Page 180: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 180. oldal

FM116/01

DataGrid oszlopok típusai• AutoGenerateColumns=true az alapértelmezés

• <Columns>….</Columns> között• asp:BoundColumn Adatmegjelenítő

oszlop• asp:ButtonColumn Nyomógombot

tartalmazó oszlop• asp:EditCommandColumn Edit nyomógombot tartalmaz• asp:HyperLinkColumn Adatmegjelenítés

hyperlink-ként

• asp:TemplateColumn Saját template adható ezen belül

Page 181: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 181. oldal

FM116/01

DataGrid oszlopok tulajdonságai• HeaderText, FooterText• HeaderImageUrl• HeaderStyle, FooterStyle, ItemStyle• SortExpression

• Az OnSortCommand metódusnak átadott mező neve

• ReadOnly (csak a BoundColumn-nál)• ButtonType (ButtonColumn, EditCommandCol.)

• ButtonColumnType.LinkButton vagy .PushButton

• CancelText, EditText, UpdateText• EditCommandColumn esetén vagy az EditText vagy az

UpdateText/CancelText kombináció látszik

Page 182: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 182. oldal

FM116/01

Adathoz kapcsolható tulajdonságok• BoundColumn esetén

• DataField a megjelenített és editálható mező neve

• ButtonColumn esetén• DataTextField adja a Text-hez kapcsolt mező nevét

• DataTextFormatString írja elő a megjelenítési formátumot

• HyperLinkColumn esetén• DataTextField adja a Text-hez kapcsolt mező nevét

• DataTextFormatString írja elő a megjelenítési formátumot

• DataNavigateUrlField adja az URL-t hordozó mező nevét,

ami a NavigateUrl tulajdonságba kerül

• DataNavigateUrlFormatString írja elő a megjelenítési

formátumot

Page 183: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 183. oldal

FM116/01

Template elemek használata• TableRow-hoz vagy TableCell-hez rendelhető

• Hierarchikus sorrend– EditItemStyle– SelectedItemStyle– AlternatingItemStyle– ItemStyle– ControlStyle

• Egyéb stíluselemek– HeaderStyle, FooterStyle– PagerStyle

Page 184: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 184. oldal

FM116/01

DataGrid példa<asp:DataGrid id="Racs1" runat="server" BorderColor="black" BorderWidth="1"

CellPadding="3" ShowFooter="true" OnItemDataBound="Item_Bound" AutoGenerateColumns="false">

<HeaderStyle BackColor="#00aaaa"> </HeaderStyle>

<FooterStyle BackColor="#00aaaa"> </FooterStyle>

<Columns>

<asp:BoundColumn HeaderText="Number" DataField="IntegerValue">

<ItemStyle BackColor="yellow"> </ItemStyle> </asp:BoundColumn>

<asp:BoundColumn HeaderText="Item" DataField="StringValue"/>

<asp:BoundColumn HeaderText="Price" DataField="CurrencyValue" DataFormatString="{0:c}">

<ItemStyle HorizontalAlign="right"> </ItemStyle></asp:BoundColumn>

</Columns>

</asp:DataGrid>

Page 185: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 185. oldal

FM116/01

Repeater vezérlőelem• A megadott template alapján ismétli az adatokat• Ez az egyetlen olyan elem, ahol a HTML tagok

szétbonthatók, például:• A nyitó <table> a <HeaderTemplate>-be kerül• A <tr> az <ItemTemplate>-be• A záró </table> pedig a <FooterTemplate>-be

• Adathordozó template elemek:• ItemTemplate és AlternatingItemTemplate• Az ItemTemplate az egyetlen kötelező elem

• Nem adathordozó template elemek:• HeaderTemplate, FooterTemplate, SeparatorTemplate

Page 186: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 186. oldal

FM116/01

Repeater példa<asp:Repeater id="Tabla1" runat="server">

<HeaderTemplate> Partnerek neve és címe: </HeaderTemplate>

<ItemTemplate>

<%# DataBinder.Eval(Container.DataItem, "PartNev") %>

(<%# DataBinder.Eval(Container.DataItem, "PartCim") %>)

</ItemTemplate>

<SeparatorTemplate>, </SeparatorTemplate>

</asp:Repeater>

Tabla1.DataSource = ds ' Ez egy feltöltött DataSet

Tabla1.DataMember = "Partner"

Tabla1.DataBind()

Page 187: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 187. oldal

FM116/01

DataList vezérlőelem• A Repeater-hez hasonló template-ek

• EditItemTemplate és SelectedItemTemplate is létezik

• Ennek megfelelően editálható (a DataGrid-hez hasonlóan)

• Az ItemTemplate az egyetlen kötelező elem

• A DataGrid-hez hasonló stílusok• Minden template-hez stílus is tartozhat, pl. ItemStyle

• Tulajdonságok– RepeatLayout = Table vagy Flow– RepeatColumns = Hány oszlopba rendezze az adatokat– RepeatDirection = Horizontal vagy Vertical

Page 188: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 188. oldal

FM116/01

Felhasználói vezérlőelemek és

komponensek készítése

Page 189: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 189. oldal

FM116/01

Code-behind Page

A Page direktíva kapcsolja össze a két file-t

Eljáráshívás a Code-Behind Page alapján

<%@ Page Inherits="Lap1" Src="Minta.vb"%>

<%@ Page Inherits="Lap1" Src="Minta.vb"%>

ds = Adat1()ds = Adat1()

Imports System

Imports System.Web

Public Class Lap1Inherits System.Web.Ui.Page Public Function Adat1() …

End FunctionEnd Class

Imports System

Imports System.Web

Public Class Lap1Inherits System.Web.Ui.Page Public Function Adat1() …

End FunctionEnd Class

<%@ Page Inherits="Lap1"Src= "Minta.vb" %>

Page 190: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 190. oldal

FM116/01

Vezérlőelemek elérése a kódból• A névtartományokat célszerű importálni

• Imports System.Web.UI.WebControlsImports System.Web.UI.HTMLControls

• A vezérlőelemeket azonos névvel Public-ként deklarálni kell

• Public lblPartNev As LabelPublic txtVaros As TextBox

• Eseményvezérlő eljárásokat kell írni• Public Sub btnKuld_Click(s as Object, e as EventArgs)

lblPartNev.Text = "Kakukk Kft."End Sub

Page 191: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 191. oldal

FM116/01

User Control• Felhasználói szerver vezérlőelem (.ascx file)

• Az Include helyett használható• Tipikus alkalmazás: fejléc, navigációs gombsor• <Head>, <Body> és <Form> nem lehet benne

• @Page helyett a @Control direktívát használjuk• <%@ Control Language="vb" Inherits="Elem1"

Src="UIElem.vb" %>

• Információátadás a controlt tartalmazó lapnak• Public Property pAdat As Integer

Get Return Cint(txtAdat.Text) End GetEnd Property

Page 192: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 192. oldal

FM116/01

User Control beépítése• Regisztrálni kell az adott ASP .NET lapon

• <%@ Register TagPrefix="FoNev" TagName="AlNev" Src="Kakukk.ascx" %>

• A TagPrefix adja az egyedi névteret• A TagName adja a user control egyedi nevét

• Szerver vezérlőelemként építjük be a lapra:• <FoNev:AlNev id="Vez1" runat="server">

FoNev:AlNev id="Vez2" runat="server">

• Információátadás a lap és a control között• lblSzam = Vez1.pAdat ' A Public Property Get-je alapján

Vez1.pAdat = 23 ' A Public Property Set-je alapján

Page 193: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 193. oldal

FM116/01

.NET komponensek• A .NET komponensek előnyei a COM-hoz képest a

telepítés szempontjából– Nincs szükség regisztrációra– Az alkalmazás/bin könyvtárba kell bemásolni– Nincs névtartomány ütközés– Nem kell a Web szervert újraindítani

• Minimum egy névtér és egy osztály• Namespace EtKomp

Public Class Szamla … End ClassEnd Namespace

Page 194: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 194. oldal

FM116/01

Komponensek felhasználása• Az alkalmazás indításakor a /bin könyvtárból

a komponensek betöltődnek• A Web.Config-ban beállítható, hogy melyek kellenek

• A komponens elérése az ASP .NET lapról1. <%@ Import Namespace="projektnév.EtKomp"

%>Dim x As New Szamla

2. Import nélkül:Dim x As New projektnév.ETKomp.Szamla

Page 195: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 195. oldal

FM116/01

Web szolgáltatásWeb Service

Page 196: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 196. oldal

FM116/01

Web szolgáltatás működési modellje

Page 197: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 197. oldal

FM116/01

Web szolgáltatások jellemzői• Alkalmazások közötti információátadás

– Nyílt Internet protokollt használ (nem DCOM!)

– Lehetséges protokollok:• HTTP GET, HTTP POST• XML és SOAP (Simple Open Access Protocol)• WSDL (Web Services Description Language) által leírt

üzenetek

• Nyilvános használatra szánt szolgáltatásoknál– Discovery információ kialakítása

– UDDI (Universal Discovery Description and Integration)

Page 198: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 198. oldal

FM116/01

Web szolgáltatás létrehozása• Egy .asmx és egy .asmx.vb file-ból áll

– Az .asmx file tartalma:• <%& WebService Language="vb"

Codebehind="Szemely.asmx.vb" Class="Projektnév.Szemely" %>

– Az .asmx.vb file tartalma:• <WebService(Description:="Info…")>

Public Class SzemelyInherits System.Web.Services.WebServices '

Nem kell <WebMethod(Description:="Info…")> Public Function FelvSzemely(strNev As String) As String

… End FunctionEnd Class

Page 199: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 199. oldal

FM116/01

Nyilvánosságra hozatal (discovery)• Manuális discovery dokumentum

• <disco:discovery xmlns:disco=… xmlns:WSDL=…> <WSDL:contactRef ref="//et/Proj/Szemely.asmx?WSDL"/> <disco:discoveryRef ref="Folder/default.disco"/></disco:discovery>

• Dinamikus discovery dokumentum• A VS .NET automatikusan létrehozza .vsdisco kiterjesztéssel

• <dinamycDiscovery xmlns=…> <exclude path="_vti_cnf"/> …</dynamicDiscovery>

• A tényleges discovery dokumentum futásidőben jön létre akkor, amikor a kliens alkalmazás rákérdez erre az info-ra

Page 200: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 200. oldal

FM116/01

Web szolgáltatás elérése• HTML leíró lap

– //et/projektnév/Szamla.asmx hatására jelenik meg• Az elérhető metódusok és argumentumok

• Egyszerű tesztelési célú szervizprogram

• Leírás a Description paraméterek tartalma alapján

• WSDL dokumentum– //et/projektnév/Szamla.asmx?WSDL hatására

jelenik meg• XML formátumú leírás (szerződés)

Page 201: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 201. oldal

FM116/01

Web szolgáltatás meghívása• Böngészőprogramból

– //et/Szamla.asmx/FelvSzemely?strNev=Kakukk– XML-ként adja vissza a felvett személy kódját

• <?xml version="1.0"><string xmlns=…>13479</string>

– A HTTP-GET protokollt használja• Kliens alkalmazásból

– Web References hozzáadásával a VS .NET létrehoz egy proxy osztályt korai kötéssel

– Ezután úgy hivatkozunk, mint egy lokális komponensre• Dim x As New Szamla.Szemely

UjKod = x.FelvSzemely("Kakukk")

Page 202: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 202. oldal

FM116/01

A Visual Studio .NET vizuális eszközei

Page 203: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 203. oldal

FM116/01

Solution Explorer

Page 204: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 204. oldal

FM116/01

IDE ToolBox-ok

• Típusok– General

– Data

– Components

– XML Schema

– Web Forms

– HTML

– Clipboard Ring

– Windows Forms

Page 205: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 205. oldal

FM116/01

További ablakok• Class View• Properties Window• Server Explorer• Object Browser• Resource View• Task List• Output Window• Command Window• Document Outline

Page 206: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 206. oldal

FM116/01

Projekt szemlélet

• File-ok gyűjteménye• Több projekt is megnyitható egyszerre

– A projekt megnyitása az éles Web site-ot jelenti

• Projekt nélkül is megnyitható egy file– File menü Open File parancs

• Solution (.SLN)– Projekt-konténer– 1:N kapcsolat van a solution és a projekt között

Page 207: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 207. oldal

FM116/01

Server Explorer

• Adatbázisok kezelése• SQLServer• Message Queues• Crystal Services• Event Logs

Page 208: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 208. oldal

FM116/01

ASP .NET Web alkalmazás

telepítése és konfigurálása

Page 209: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 209. oldal

FM116/01

Konfigurációs file szekciói<configuration> <configSections> <sectionGroup name="system.web"> <section name="authorization" type="System.Web.Configuration.AuthorizationConfigHandler, System.Web, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <section name="sessionState" type="System.Web.SessionState.SessionStateSectionHandler, System.Web, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" /> </sectionGroup>… </configSections>…</configuration>

Page 210: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 210. oldal

FM116/01

Szekciók kitöltése információval<system.web> <authorization> <allow users="*" /> <!—Ha az összes felhasználót engedjük --> <!-- Allow or deny specific users. allow users="[felhasználók vesszővel elválasztott listája]" roles="[szerepkörök vesszővel elválasztott listája]"/> <deny users="[felhasználók vesszővel elválasztott listája]" roles="[szerepkörök vesszővel elválasztott listája]"/> --> </authorization> <sessionState sqlConnectionString="data source=127.0.0.1; user id=sa;password=" cookieless="false" timeout="10"/></system.web>

Page 211: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 211. oldal

FM116/01

Hitelesítés (authentication)• Windows

– Az IIS végzi el• Basic• Digest• Integrált (Kerberos)

• Forms– Cookie-t használhat

• Passport• None

Page 212: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 212. oldal

FM116/01

Forms hitelesítés konfigurálása<authentication mode="forms">

<forms name="cookie_neve" loginurl="/login.aspx">

<credentials passwordFormat=SHA1>

<user name="Gipsz Jakab" password="9EF4GZ5634HJ67F8"/>

<user name="Teszt Elek" password="8G6K734FWP57FZQ0"/>

</credentials>

</forms>

</authentication>

Page 213: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 213. oldal

FM116/01

Forms hitelesítés programozása• FormsAuthentication.Authenticate

– Két paramétert vár (felhasználónév, jelszó)

– Logikai értéket ad vissza, hogy szerepel a Credentials szekcióban, vagy sem

• FormsAuthentication.RedirectFromLoginPage– Két paramétert vár (felhasználónév, kell-e cookie)

– Kiállít egy "jegyet" az adott felhasználó nevére

• FormsAuthentication.SignOut()– Érvényteleníti a korábban kiállított "jegyet"

Page 214: Internetes  alkalmazásfejlesztés

Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 214. oldal

FM116/01

Jogosultság (authorization)<location path="szamla" <system.web> <authorization> <allow users="Nagy Jolán, Németh Péter"/> <deny users="Kiss Péter" /> <deny users="?" /> </authorization> </system.web></location><location path="mindenki" <system.web> <authorization> <allow users="*"/> </authorization> </system.web></location>