Internetes alkalmazásfejlesztés
description
Transcript of 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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 2. oldal
FM116/01
HTML alapok
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
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
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
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
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 8. oldal
FM116/01
Cascading Style Sheet
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.
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
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
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 13. oldal
FM116/01
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 14. oldal
FM116/01
DHTML alapok
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.
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 17. oldal
FM116/01
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
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
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ő.
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
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 }
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.
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.
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(?!)
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
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
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
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++
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/>
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
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)
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:…")
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)
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
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>
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)
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!
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ó
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 40. oldal
FM116/01
Adatkezelés a DHTML segítségével
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 42. oldal
FM116/01
DHTML adat architektúra
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
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.
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
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.
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.
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
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)
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.
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
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.
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 53. oldal
FM116/01
XML alapok
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)
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>
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
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.
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>
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
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
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>
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.
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
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
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
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"))
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")
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
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
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
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
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>
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>
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>
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>
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
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
– < > & " '
• A scriptek belsejében sem lehetnek más jelek– <SCRIPT><![CDATA[ ide jön a script ] ] ></SCRIPT>
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
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>
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="-."
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 82. oldal
FM116/01
Internetes alkalmazás rétegei
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 83. oldal
FM116/01
Háromrétegű Web architektúra
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 84. oldal
FM116/01
Többrétegű architektúra példa
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
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 87. oldal
FM116/01
Active Server Pagesalapfogalmak
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
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
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>
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 %>
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
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
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.
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
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
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.
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.
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)
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
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.
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.
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
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
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
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
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
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ó.
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 109. oldal
FM116/01
Az ASP.NET alapjai
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
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
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
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
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
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”/>
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
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
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.
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
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
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
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>
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
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)
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"
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"
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"
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>
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}"
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 130. oldal
FM116/01
Az ADO.NET alapjai
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 131. oldal
FM116/01
ADO .NET
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)
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
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
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
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)
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
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ő
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
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()
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
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()
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 144. oldal
FM116/01
A DataSet osztály objektummodellje
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
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))
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
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
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
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
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)
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
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()
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
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
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ó
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
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
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
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")
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
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))
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
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
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
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
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
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
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
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
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.
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
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
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
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 176. oldal
FM116/01
Adatok megjelenítése a Web űrlapon
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
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">
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()
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
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
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
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
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>
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
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()
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
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
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" %>
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
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
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
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
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
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 195. oldal
FM116/01
Web szolgáltatásWeb Service
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 196. oldal
FM116/01
Web szolgáltatás működési modellje
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)
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
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
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)
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")
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 202. oldal
FM116/01
A Visual Studio .NET vizuális eszközei
Informatikai Alkalmazások Internet alapú alkalmazásfejlesztés - 119Intézete 203. oldal
FM116/01
Solution Explorer
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
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
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
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
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
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>
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>
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
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>
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"
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>