internetes alkalmazásfejlesztés

Post on 09-Jan-2016

33 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

top related