Licenta Stefan Ciucanel 1 [625898]
UNIVERSITATEA TEHNICĂ „GHEORGHE ASACHI “ DIN IA ȘI
FACULTATEA DE INGINERIE ELECTRICĂ, ENERGETICĂ
ȘI INFORMATICĂ APLICATĂ
LUCRARE DE LICENȚĂ
ÎNDRUMĂTOR ȘTINȚIFIC
Conf.Dr.Ing. LUCIAN NIȚĂ ABSOLVENT: [anonimizat]
2019
Universitatea Tehnică „Gheorghe Asachi” din Iași
FACULTATEA DE INGINERIE
ELECTRIC Ă,ENERGETICĂ ȘI INFORMATICĂ
APLICATĂ
APLICAȚIE WEB PENTRU
GESTIONAREA TEMELOR DE
LICENȚĂ
ÎNDRUMĂTOR ȘTINȚIFIC
Conf.Dr.Ing. LUCIAN NIȚĂ ABSOLVENT: [anonimizat]
2019
1
Cuprins
1. Introducere ………………………….. ………………………….. ………………………….. ………………… 3
2. Tehnologia ASP.NET ………………………….. ………………………….. ………………………….. …..5
2.1. Introdu cere în ASP.NET ………………………….. ………………………….. ……………………… 5
2.2. Internet Information Services ………………………….. ………………………….. ………………. 6
2.3. Arhitectura unei aplicații ASP.NET ………………………….. ………………………….. ………. 7
2.4. Configurarea aplicațiilor ASP.NET ………………………….. ………………………….. ………. 8
2.5. ASP.NET Web Forms ………………………….. ………………………….. ………………………… 9
2.6. Web Forms Controale ASP.NET ………………………….. ………………………….. ………….. 9
2.7. Web Forms -Procesarea paginilor ASP.NET ………………………….. ……………………… 13
3. Tehnologia ASP.MVC ………………………….. ………………………….. ………………………….. .. 15
3.1. Introdu cere în ASP.NET MVC ………………………….. ………………………….. …………… 15
3.2. Structura unei aplicații ASP.NET MVC ………………………….. ………………………….. .. 17
3.3. Procesul de execuție al unei aplicații MVC (C#) ………………………….. ………………… 17
3.4. Modele, View -uri, Controllere (C#) ………………………….. ………………………….. …….. 18
3.4.1 Modele ………………………….. ………………………….. ………………………….. ………… 18
3.4.2 View -uri ………………………….. ………………………….. ………………………….. ………. 20
3.4.3 Controllere ………………………….. ………………………….. ………………………….. …… 21
4. Limbajul HTML ………………………….. ………………………….. ………………………….. ……….. 22
4.1. Noțiuni des pre HTML ………………………….. ………………………….. ………………………. 22
4.1.1 Blocuri de text ………………………….. ………………………….. ………………………….. . 23
4.1.2 Blocuri paragraf ………………………….. ………………………….. ………………………… 23
4.1.3 Blocuri de titlu ………………………….. ………………………….. ………………………….. 23
4.1.4 Linii orizontale ………………………….. ………………………….. ………………………….. 24
4.1.5 Imagini ………………………….. ………………………….. ………………………….. ………… 24
4.1.6 Legături (Link -uri) ………………………….. ………………………….. …………………….. 24
4.1.7 Liste ………………………….. ………………………….. ………………………….. ……………. 25
4.1.8 Tabele ………………………….. ………………………….. ………………………….. …………. 26
4.1.9 Ferestre sau cadre în HTML ………………………….. ………………………….. ………… 27
4.1.10 Atribute ale chenarelor ………………………….. ………………………….. ……………….. 27
4.1.11 Formulare ………………………….. ………………………….. ………………………….. …….. 28
5. Baze de date SQL ………………………….. ………………………….. ………………………….. ……… 30
5.1. Introducere în limbajul SQL ………………………….. ………………………….. ………………. 30
2
5.2. Instrucțiuni pentru manipularea datelor ………………………….. ………………………….. … 32
5.3. Modele de programare cu baze de date Entity Framework ………………………….. …… 34
5.4. Entity Data Model (EDM) ………………………….. ………………………….. …………………. 35
5.5. Maparea obiectelor la date ………………………….. ………………………….. …………………. 36
5.6. Accesare și modificare date din entități ………………………….. ………………………….. … 36
6. Limbajul JavaScript ………………………….. ………………………….. ………………………….. …… 39
6.1. Introducere în limbajul JavaScript ………………………….. ………………………….. ………. 39
6.2. Tipuri de date și variabile ………………………….. ………………………….. ………………….. 40
6.3. Instrucțiuni ………………………….. ………………………….. ………………………….. …………. 41
6.4. Funcții pre definite ………………………….. ………………………….. ………………………….. .. 41
7. Aplicație web pentru gestionarea temelor de licență ………………………….. …………………. 42
7.1. Structura de bază și funcționalitățile aplicației ………………………….. …………………… 42
7.2. Utilizarea aplicației ………………………….. ………………………….. ………………………….. . 43
7.2.1 Generalități ………………………….. ………………………….. ………………………….. …… 43
7.2.2 Bara de navigare ………………………….. ………………………….. ………………………… 44
7.2.3 Căutare în aplicație ………………………….. ………………………….. …………………….. 45
7.2.4 Autentificarea în cadrul aplicației ………………………….. ………………………….. …. 46
7.2.5 Adăugare teme licență ………………………….. ………………………….. ………………… 46
7.2.6 Adăugare profesor coordonator ………………………….. ………………………….. ……. 48
7.2.7 Utilizare de către student ………………………….. ………………………….. …………….. 50
8. Concluzii ………………………….. ………………………….. ………………………….. …………………. 51
9. Bibliografie ………………………….. ………………………….. ………………………….. ………………. 52
3
1. Introducere
Utilizarea softurilor de management/aplicațiilor de gestiune a devenit pentru orice
organizație o metodă fundamentală de a -și optimiza activitățile desfășurate, asigurându -se că
acestea oferă cel mai înalt nivel de eficiență pe timpul delur ării proiectelor.
O astfel de aplicație este una de tip enterprise și integrează funcțiile mai multor
departamente din cadrul organizației intr -un singur soft.
Utilizarea unei astfel de aplicații aduce următoarele avantaje:
Comunicarea între membri în timp real
Împărtășirea de documente, pentru proiecte ce nesită utilizarea
documentelor, această funcționalitate oferă posibilitatea utilizatorilor să
vizualizeze și să editeze rapoarte.
Datorită utilizării unui sistem de baze de date pentru partea de back -end,
aceste aplicații pot realiza o centralizare a datelor stocate sau o arhivare
a acestora.
Vizibilitate completă în toate procesele importante, în diferite
departamente ale unei organizații (în special pentru personalul de
conducere)
Estimare mai bună asupr a timpului și resurselor necesare pentru un
anumit proiect
Acest tip de aplicație nu este folosit pe scară largă, majoritatea universităților utilizând
doar un sistem de stocare a licențelor în format electronic și de căutare pe baza conținutului
acestora.
În continuare voi prezenta sistemele de stocare a lucrărilor de licență utilizate în mai
multe universități:
1. „Graduation Manager”
Florida State University a realizat o bază de date ce conține toate licențele și dizertațiile
susținute în cadru unive rsității. Studenții pot vizualiza și căuta în acest catalog de documente
doar după ce se autentifică pe baza unui id.
Link: https://www.lib.fsu.edu/find/etds.html
4
2. „Graduation Manager”
„Graduation Manager” este o aplicație online oferită de Cornell University Graduate
School folosită pentru uploadarea de copii în format electronic ale lucrărilor de licență sau
dizertație. Aceste documente vor fi stocate în sistem doar după ce vor fi apro bate de membrii
din comisia de evaluare.
Link: https://www.gradschool.cornell.edu/thesis -and-dissertation/uploading –
graduation -manager
3. „ETDs : Net worked Digital Library of Theses and Dissertations”
ETDs este o librărie virtuală de licențe și dizertații realizată cu scopul de a oferi acces
liber al resurselor și de a îmbunătăți schimbul de cunoștințe la nivel mondial(în mediul web)
Link: https://vtechworks.lib.vt.edu/handle/10919/18725
5
2. Tehnologia ASP.NET
2.1. Introducere în ASP.NET
ASP.NET oferă un model de programare și o infrastructură cu ajutorul cărora se pot
dezvolta atât aplicații Web cât și servicii Web XML. ASP este acronimul pentru Active Server
Pages. ASP.NET reprezintă noua platformă de programare a aplicatiilor Web ce folosește .NET
Framework.
Principalele caracteristici ale tehnologiei ASP.NET:
Aplicațiile ASP.NET sunt compilate . Aplicațiile ASP.NET sunt compilate în două
faze:prima fază în care codul C# sau VB.NET este compilat într -un assembly ce conține cod
intermediar IL (această compilare poate avea loc în momentul primei cereri dacă sursele nu
sunt deja compi late) și a doua realizată de JIT chiar înaintea execuției propriu -zise a paginii și
constă în transformarea codului IL în cod nativ optimizat pentru sistemul pe care se află serverul
Web. O aplicație Web nu este compilată de fiecare dată când o pagină sau un serviciu Web este
cerut, în schimb se folosește o metodă de păstrare (cache) a codului deja compilat (JIT). Codul
IL este recompilat de fiecare dată când sursele sunt modificate.
ASP.NET este multi -limbaj . Se poate alege orice limbaj CLI pentru a dezvol ta o
aplicație Web. Aceasta deoarece rezultatul compilării va fi cod IL adică un cod scris pentru
.NET și poate rula în interiorul unui mediu protejat oferit de CLR.
ASP.NET este orientat pe obiect. Cel mai bun exemplu este Acela al controalelor
server -side: controalele ce pot fi create și modificate programatic astfel încât să răspundă într –
un anumit fel la evenimente sau să aibă un anumit aspect
Aplicațiile ASP.NET sunt ușor de instalat și configurat. De cele mai multe ori
instalarea unei aplicații ASP.NE T înseamnă copierea fișierelor aplicației într -o cale de pe disc,
cale configurată în IIS ca director virtual.Configurarea este la fel de simplă: fiecare aplicație
conține un fișier în format XML, web.config, în care sunt ținute setările.Poate fi modificat în
timpul rulării iar aplicarea lor se face automat.
6
2.2. Internet Information Services
Internet Information Services (IIS) reprez intă un set de servicii Windows responsabile
cu procesarea cererilor venite din rețea pe un anumit port. În acest sens există un serviciu
Windows numit World Wide Web Publishing Service ce ascultă, de obicei pe portul 80 (HTTP)
sau 443 (HTTPS), cereri pentru o anumită resursă la un site Web i nstalat. Acest serviciu
Windows este administrat de un instrument numit IIS Manager .
În cadrul IIS, site -urile Web sunt grupate în directoare virtuale cu legături către
directoare existente pe disc sau configurate logic de Windows dar cu loca ția pe altă mașină, în
care se află fizic aplicațiile Web.Resursele unei aplicații Web sunt accesate d e client prin
intermediul unui browser căruia îi precizăm un URL. Această adresă conține mai multe
informații ce vor indica: tipul protocolului, portul asociat aplicației în cadrul serverului (de
regulă 80), locația virtuală a resursei și cel mai important numele resursei sau al fișierului. Să
analizăm URL -ul următor: http://localhost:8080/AppWeb/index.aspx
În primul rând se poate observa că protocolul folosit este http. Prin acest URL se face o
cerer e către un server, cu aliasul localhost, pe portul 8080, spre resursa index.aspx aflată în
directorul virtual AppWeb. Extensia .aspx este foarte importantă întrucât procesarea depinde
de tipul ei. Fiecare extensie de fișier are asociată în cadrul IIS o ext ensiune ISAPI1. Această
extensie este reprezentată fizic de o bibliotecă dinamică (un fișier DLL). După ce se determină
extensia asociată resursei Web, serverul IIS predă controlul procesării API -ului din această
bibliotecă (sau ISAPI).
Astfel resursele .a spx sau .asmx sunt date spre procesare mediului ASP.NET. Dacă pe
aceeași mașină există două versiuni de .NET atunci consola de administrare IIS va oferă
posibilitatea alegerii versiunii. Trebuie menționat că înainte de a trimite mai departe cererea,
IIS fa ce câteva preprocesări cum ar fi verificarea drepturilor de acces pentru resursa respectivă
sau autentificarea utilizatorilor. Din acest motiv resursele aplicației trebuie configurate în cadrul
IIS cu acces anonim și public.Dacă există fișiere ce nu trebui e accesate public acestea vor fi
configurate separat. În cazul în care resursele sunt pagini atunci restricționarea accesului se face
programatic din codul behind. O dată cererea ajunsă la extensiunea ISAPI din ASP.NET
procesarea efectivă a cererii este re alizată de mediul .NET. Mai precis cererea este trimisă unui
proces separat ce reprezintă mediul în care rulează ASP.NET.
7
2.3. Arhitectura unei aplicații ASP.NET
Aplicațiile ASP.NET sunt grupate în cadrul IIS în directoare virtuale. În acest fel
directoarele fizice sunt expuse de către serverul Web pentru accesul din afară. În componența
directorului aplicației pot intra mai multe fișiere și directoare. De regulă o aplicație Web este
compusă din următoarele ingrediente:
• Pagini Web : Reprezentate de fișierele cu extensia .aspx și definesc interfața
Web a aplicației;
• Servicii Web : Module ce oferă funcții utile aplicațiilor (nu numai Web) aflate
pe alte calculatoare și pe diferite platforme. Aceste module sunt reprezentate de
fișiere cu extensia .asmx;
• Fișiere de cod: De obicei o pagina Web este însoțită de un fișier de cod ce
conține logica aplicației pentru pagina respectivă. În funcție de modul de
separare a codului de interfață pot exista mai multe fișiere sursă. De obicei
numele fișierului sursă este dat de ce l al paginii Web prefixat de extensia tipului
de cod sursă (.cs sau .vb).
• Un fișier de configurare numit web.config în care sunt păstrate opțiunile pentru
grupul de pagini Web conținute în directorul curent și subdirectoarele acestuia.
Pot exista mai multe fișiere web.config în fiecare subdirector. La nivelul
sistemului setările din toate fișierele web.config sunt văzute unitar. O pagină
Web poate accesa toate proprietățile din fișierele web.config aflate în directorul
curent și din toate directoarele ce co mpun calea către aceasta;
• Fișierul Global.asax : Conține funcțiile de tratare a evenimentelor globale ale
aplicației (lansarea aplicației, cereri, etc.). Fișierul Global.asax nu conține cod
HTML și nici ASP.NET în schimb conține metode cu nume predefinite c e sunt
apelate în funcție de eveniment.
• Alte componente necesare compunerii aplicației. De obicei acestea sunt
assembly -uri, imagini, CSS -uri, etc.
8
2.4. Configurarea aplicațiilor ASP.NET
Configurarea în ASP.NET se realizează prin fișiere de configurare XML. A cestea sunt
ușor de citit și editat, sunt ușor de accesat și nu sunt niciodată protejate la scriere. Acesta ultimă
proprietate ușureaza procesul de configurare întrucât schimbările în fișierul de configurare sunt
aplicate automat de IIS.
Primul fișier de c onfigurare ce trebuie luat în considerare este cel care stabilește setările
pentru întregul sistem: machine.config. Aici se pot seta opțiunile pentru procesul lucrător sau
înregistrarea diferiților furnizori implementați de utilizator sau definiți deja în .NET. Acest
fișier se găsește în directorul Config din directorul de instalare a versiunii de .NET Framework.
Pe lângă acesta în același director se mai află și un fișier web.config ce conține setări adiționale.
Aici pot fi adăugați handler -i de HTTP sau tipurile de module HTTP ce vor fi folosite, de
procesul lucrător pentru a procesa cererile http.
Aplicațiile ASP.NET folosesc un sistem de configurare ierarhizat pe mai multe nivele
ce permit utilizarea unor anumite setări pentru fiecare parte a aplicației . Pentru a folosi aceasta
tehnică trebuie create subdirectoare în cadrul directorului rădăcină al aplicației. Fiecare
subdirector moștenește setările directorului părinte. De exemplu dacă structura directorului
virtual AppWeb ar avea un subdirector SubAppW eb fiecare cu un fișier web.config pentru
paginile din AppWeb se vor aplica mai întâi setările din machine.config și web.config (din
directorul Config) și apoi cele din fișierul web.config local. Pentru paginile aflate în
SubAppWeb se mai aplică toate setă rile de până acum la care se adăuga cele din fișierul
web.config aflat în directorul local. Conținutul unui fișier de configurare ASP.NET este cuprins
în interiorul tag -ului <configuration>, ce reprezintă nodul root al documentului XML.
Sistemul de configu rare al aplicațiilor .NET conține și alte două elemente des utilizate
în aplicațiile ASP.NET: <appSettings> și <connectionStrings>. Ultimul poate defini mai multe
conexiuni la o bază de date. Setările proprii aplicației se pot adăuga în elementul <appSett ings>
sub forma unor perechi cheie -valoare. Valorile și cheile pot fi doar de tip șir caractere, întrucât
valorile atributelor unui element XML pot fi valori de tip șir de caractere.
9
2.5. ASP.NET Web Forms
Paginile Web din ASP.NET su nt denumite oficial Web Foms și permit cererea unei
aplicații Web în acelaș i mod în care este construită o aplicație Windows folosind aceeași
interf ață bazată pe controale.
Aplicațiile ASP.NET sunt executate pe server iar ceea ce apare în browser -ul client ului
reprezintă rezultatul acestei execuții.
Ceea ce se generează în urma execu ției unei pagini este cod HTML. ASP.NET
generează cod HTML în funcț ie de posibilitățile de afișare ale browser -ului.
Pentru interacțiunea cu utilizato rii ASP.NET folosește o teh nică numită postback prin
intermediul căreia sunt transmise înapoi la server date despre acțiunea efe ctuată de utilizator.
O dată ce ASP.NET primește aceste date lansează evenimentul asignat ace lei acțiuni.
Aplicațiile Web sunt aplicații ca re nu păstrează starea curentă. Înainte de a transmite
codul HTML p entru afișare în browser, toate obiectele care au fost construite pen tru realizarea
acestui cod HTML sunt distruse. Pentru remedia acest lucr u se folosesc tehnici precum „view
state” sau „query string” ș i obiecte persistente pentru un anumit context: sesiune sau aplicație.
2.6. Web Forms Controale ASP.NET
Controalele ASP.NET sunt în esență clase din biblioteca .NET Framework reprezintă
elementele vizuale dintr -un Web Form și a căror funcționalitate de bază est e de a genera cod
HTML. Ierarhia de clase pentru controale ser ver este ilustrată în figura 2.1 .
Figura 2.1 – Ierarhia de clase a controalelor Web din System.Web.UI.WebControls
10
Clasa din care sunt derivate toate contro alele server este Control și se află în namespace –
ul System.Web.UI . Nu trebuie confundată cu cea din care sunt derivate controalele pentru
Windows Forms.
Cei mai des folosiți membri ai acestei clase sunt:
ClientID Proprietate ce întoarce identificatorul controlului adică un nume unic ales la
instanțierea paginii.
Controls Returnează o colecție de controale conținute în acest control.
EnableViewState Proprietate booleană prin care se activează sau dezactivează
păstrarea stării acestui control în urma unui postback. Implicit este true.
ID Returnează sau setează identificatorul (de tip String) pentru acest control. Prin
intermediul acestui nume controlul poate fi accesat în scripturile server side și în cod.
Page Returnează o referință la obiectul paginii părinte.
Parent Returnează o referință la controlul părinte. Acesta poate fi un obiect de tip
Control sau Page. Trebuie observat ca obiectul paginii este tot un control.
Visible Returnează sau setează dacă acest control este vizibil sau nu. În cazul în care
proprietatea este setat ă pe false atunci nu se va genera tag -ul HTML corespunzător.
DataBind() Metoda ce realizează legarea controlului și a tuturor controalelor pe care
le conține la sursa de date.
FindControl() Metoda care caută un control copil după nume în controlul curent sau
în toate controalele pe care le conține. Este returnată o referință la tipul Control ce apoi poate fi
convertita la tipul corespunzător. Tipul este returnat de metoda GetType().
Render() Metoda prin intermediul căreia este generat codul HTML al acestui controlului. Nu
este apelabilă direct întrucât accesul este protected, în schimb ASP.NET cheamă această metodă
când pagina este afișată .
Controalele server HTML din cadrul System.Web.UI.HtmlControls constituie adaptoare
(sau wrapper -e) peste contr oalele standard HTML. Acestea sunt declarate la fel însă se mai
adăugă atributul runat =”server” pentru a se specifica fapt ul că sunt executate pe server. Orice
control HTML poate fi transfor mat într -unul server dacă se adaugă acest atribut. Dacă nu există
o corespo ndență directă în biblioteca de clase, ASP.NET va folosi clasa HtmlGenericControl .
În total sunt 20 de tipuri de controale având clasa de bază HtmlControl
Cea de -a doua categorie importantă de controale o reprezintă cea a controalelor Web.
Ierarh ia de clase se poate observa în figura următoare (figura 2.2 ):
11
Figura 2.2 – Ierarhia de clase a controalelor Web din System.Web.UI.WebControls
Aceste tipuri de controale au aceeași fu ncționalitate ca a controalelor HTML dar conțin
un set proprietăți și met ode mult mai ușor de înțeles și folosit. De exemplu setările de stil la
cele de tip “html” se aplică prin precizarea unui CSS, pe când la cele “web” acest lucru se face
programatic prin setarea unor proprietăți. În plus tipur ile de controale sunt de stul de limitate ca
număr și ca funcționalități întrucât depind de standardul HTML
Controalele Web din ASP.NE T oferă o mult mai multe tipuri controale și cu
funcționalități mai complexe . Clasele de bază pentru aceste controale sunt WebControl și
BaseBoundC ontrol pentru controale ce reprezintă structuri de date complexe (liste, arbori). Alte
diferențe între cele două tipuri de controale sunt:
• WebControl oferă un model mult mai abstract și mai consistent decât controalele
server HTML;
• Controale “Web” pot gene ra mai multe tag -uri HTML plus acolo unde este cazul
JavaScript
• Declararea lor se face cu sintaxa <asp:tip control> având grijă să prefixăm
numele cu “asp:”. Acest prefix ajută la distingerea celor două tipuri.
12
Controale Web trebuie să se supună următo arelor reguli:
• Fiecare declarație trebuie să aibă un tag de închidere sau un element gol “/>” la
sfârșit. Tag -urile ASP.NET urmează aceleași reguli ca XHTML;
• Toate controalele Web trebuie declarate cu atributul runat setat pe ”server” chiar
dacă nu declase ază un postback. Acest lucru nu este aplicabil în cazul celor
“html”.
În cadrul controalelor Web există două tipuri speciale de controale:
• Rich sau avansate: Acestea au posibilitatea de a genera cantități mari de cod
HTML și JavaScript pentru a crea inter fața. De exemplu controlul de tip calendar
sau TreeView;
• Controale de validare: Permit validarea datelor de intrare pentru un control.
De exemplu se poate restricționa tipul și numărul caractere folosite ca date de
intrare pentru un control de tip Textbox.
Pe lângă această clasificare controalele Web mai pot fi grupate în funcție de
specializarea lor:
• Controale pentru reprezentarea structurilor de date. Aici sunt incluse controalele
de tip grid și listă, proiectate pentru a putea afișa cantități mari de in formație,
permițând paginarea, editarea sau sortarea elementelor. Un al aspect nou
introdus în cadrul acestor date este folosirea modelelor ce permit crearea de
controale adaptabile la tipul de vizualizare dorit;
• Controale de navigare: permit utilizatorulu i navigarea prin structura site -ului
Web;
• Controale de login: aceste controale sporesc munca în realizarea de paginii de
login întrucât interfața lor este adaptabilă și urmează modelu l de autentificare
din ASP.NET;
• Web Parts: Reprezintă un set de controale utilizate în construcția portalelor și
site-urilor Web conf igurabile de către utilizatori;
• Controale Mobile ASP.NET: Sunt controale asemănătoare cu cele Web însă sunt
adaptate pentru clienți mobili cum ar fi dispositive precum PDA sau Smartphone
sau orice telefon mobil ce poate afișa pagini în standardele HTML și WML
(Wireless Markup Language). Runtime -ul ASP.NET generează cod WML sau
HTML în funcție de capabilitățile clientului de HTTP aflat pe dispozitivul mobil.
13
2.7. Web Forms -Procesarea paginilor ASP.NET
Pentru înțelegerea modelului d e procesare a paginilor ASP.NET este vital cunoașterea
fazelor procesării și or dinea în care sunt executate și evenimentele care le ridică. În mare orice
pagină ASP.NET parcurge 6 etape importante :
Crearea și inițializarea pa ginii (ASP.NET ). În prima fază ASP.NET creează obiectul
paginii, generează controalele definite cu tag -uri în fișierul aspx. În plus dacă cererea este un
postback(se referă la o acțiune specifică pentru o pagină Web interactivă ce constă în trimiterea
ei, în forma în care se află pe calculatorul utilizatorului, înapoi la server pentru procesare.),
informația de view state este deserializată și apoi pe baza ei sunt inițializate controalele. La
acest pas este generat evenimentul Page.Init. Acesta este rar fol osit întrucât unele controale ori
nu au fost create ori nu au fost inițializate cu informația din view state. În această etapă
operațiile de creare și inițializare sunt efectuate automat de CLR.
Inițializarea paginii din codul aplicației .În această fază obiectele pentru controale au
fost deja create și inițializate fie cu valorile implicite fie cu informația din view state.
Evenimentul ce marchează această etapă este Page.Load executat la fiecare cerere chiar dacă
este postback. Diferențierea între cele d ouă acțiuni se face prin inspectarea proprietății statice
Page.isPostBack. Acest moment este indicat pentru inițializarea controalelor cu date obținute
prin operații consumatoare de timp și trebuie inițializate o singură dată. De exemplu afișarea
unei tabe le într -un control GridView: la un eventual postback se verifică proprietatea
isPostBack și se trece peste preluarea tabelei din baza de date. În celelalte cazuri activarea view
state-ului (proprietatea Control.EnableViewState) rezolvă inițializarea obiect ului ce reprezintă
controlul.
Validarea .ASP.NET introduce controale noi de validare ce realizează verificarea
automată a datelor introduse de utilizatori, iar unde este cazul afișează mesaje de eroare. Aceste
controale “intră în funcțiune” după încărcare a paginii, dar înainte de tratarea celorlalte
evenimente. Dacă o pagină a fost validată se poate determina prin proprietatea Page.IsValid.
Tratarea evenimentelor .Înainte de acest punct, controalele sunt create și inițializate iar
pagina este validată. În general evenimentele controalelor Web pot fi clasificate în două
categorii: declanșate imediat (butoane, link -uri sau controale ce utilizează funcția
JavaScript_doPostBack()) și cele declanșate la o schimbare de stare (de exemplu selectarea unui
element d intr-o listă drop -down). În cazul unor controale Web, din .NET 2.0 evenimentele de
14
schimbare de stare pot declanșa postback automat prin setarea pe true a proprietății
AutoPostBack. În caz contrar evenimentul se va executa la următorul postback.
Legarea au tomată a datelor (data binding). Pentru controalele ce folosesc surse de
date exista două momente în care se interoghează sursa de date: unul chiar înaintea
evenimentului Page.PreRender și constă în actualizarea sursei (inserări, ștergeri și actualizare)
și a doilea după tratarea evenimentului în care datele sunt preluate din sursa de date și aduse
controalelor la care sunt asignate. Acest model vine cu o limitare întrucât nici o funcție de
tratare a unui eveniment nu poate accesa ultimele date luate din su rsa de date; evenimentul
Page.Unload este declanșat după ce codul HTML a fost generat. Evenimentul Page.PreRender
semnifică ultima acțiune înainte de generarea codului HTML.
Distrugerea obiectelor. Această fază încheie ciclul de viață al unei pagini Web și constă
în distrugerea obiectelor componente ale paginii și este precedată de evenimentul Page.Unload .
Orice resursă unmanaged trebuie dealocată la acest pas. În acest sens există evenimentul
Page.Dispose declanșat când pagina este distrusă de garbage coll ector .
15
3. Tehnologia ASP.MVC
3.1. Introducere în ASP.NET MVC
ASP.NET MVC oferă o alternative la Web Forms pentru construirea de aplicații web
pe platforma .NET . A fost lansată prima dată de Microsoft în noiembrie 2007 .
Relația dintre diferitele tehnologii web ASP.NET :
Figura 3.1 – Relația dintre diferitele tehnologii web ASP.NET
ASP.NET Web Pages a fost lansat în același timp cu ASP.NET MVC 3 și este proiectat
ca o alternativă mai simplă a Web Forms și MVC pentru noii dezvoltatori care vor să utilizeze
platforma ASP.NET.
Model -View -Controller (MVC) separă o aplicație in trei componente principale:
• M:model (Model). Modelul conține o mulțime de clase ce consti tuie datele cu
care se lucrează și regulile de interacțiune ale acestora.
• V: vizualiza re (View User Interface). View definește cum va arăta interfața
aplicației.
• C: control (Controller). Controller -ul conține o mulțime de clase ce gestionează
comunicația de la utilizator si logica specifică aplicației
16
Figura 3.2 – MVC aplicat la fram ework -ul WEb
Model : Con ține clase ce reprezint ă dome niul aplicației. Aceste obiecte î ncapsuleaz ă
adesea date memorate într-o baz ă de date precum și cod folosit pentru a manipula datele și a
executa ac țiuni s pecifice logicii aplicației. Cu ASP.NET MVC, ace sta este v ăzut mai ales ca un
Data Acces Layer – DAL – de un anumit tip, utiliz ând de exemplu Entity Fr amework sau
NHibernate combinat cu cod specific logicii aplica ției.
View : View es te un template pentru a genera î n mod dinamic HTML.
Controller : Controller este o clas ă special ă ce gesti onează relațiile dintre View si
Model. Controller -ul răspunde la ac țiunile utiliza torului, comunică cu modelul si decide ce
vizualizare va afi șa (daca exis ta una). În ASP.NET MVC, numele acestei clase con ține sufixu l
Controller.
17
3.2. Structura unei aplicații ASP.NET MVC
/Controllers Conține clasele pentru Controller ce gestionează cererile URL.
/Models Conține clasele ce reprezintă datele modelului, gestionarea acestor obiecte.
/Views Conține fișiere template UI responsabile pentru afișarea rezultatului.
/Scripts Conține biblioteci JavaScript și scripturi (.js).
/Images Conține imaginile folosite in cadrul aplicației.
/Content Putem pune CSS sau alt co nținut dar nu scripturi și/sau imagini.
/Filters Conține codul pentru filtre.
/App_ Data Conține fișierele de date Read/Write.
/App_Start Conține cod de configurare, grupări de fișiere si Web API.
Această structură este generată (nu în totalitate) de către Visual Sudio. Se poate folosi
și o structură personalizată în sensul adaugării de noi directoare.
3.3. Procesul de execuție al unei aplicații MVC (C#)
Cererile că tre o aplica ție Web bazat ă pe ASP.NET MVC trec printr -un obiect
UrlR outingModule , obiect ce este un modul HTTP.
Modulul parseaz ă cererea și determin ă calea de urmat ( route selection ).
Un obiect “ route” este o instan ță a unei clase ce implementeaz ă RouteBase , și în mod
obișnuit este o instan ță a clasei Route . Dac ă obiectul UrlRoutingModule nu poate determina o
cale pentru a continua, cererea este returnat ă către procesul ASP.NET sau IIS.
Din obiectul Route selectat, obiectul UrlRoutingModule obține un obiect IrouteHandler,
obiect ce este asociat cu obiectul Route . În mod obișnuit, într -o aplicație MVC, acesta va fi o
instanță a clasei MvcRouteHandler.
Instanța IrouteHandler creează un obiect IhttpHandler și îi trasnmite obiectul
IhttpContext. Implicit, instanța IhttpHandler, pentru MVC, este obiectul MvcHandler.
Obiectul MvcHandler va selecta controller -ul ce va trata cererea.
Modulul și handler -ul sunt puncte de intrare în framework ASP.NET MVC. Sunt
realizate două instrucțiuni, cea de selectare a controller -ului și cea de obținere instanță pentru
controller -ul specificat.
18
3.4. Modele, View -uri, Controllere (C#)
Un URL nu este egal cu o pagin ă. În ASP.NET Web Forms este o corespondență între
URL și pagina (pentru fiecare pagină se apelează fișierul *.aspx corespunzător).
În Asp MVC cereril e din browser sunt mapate la acț iuni din controller.
3.4.1 Modele
Conțin logica aplicației, logica de validare și accesul la baza de date. Clasele se gasesc
in \Models \…
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVC3.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!" ;
ViewBag.AResult = MVC3. A.Ma();
ViewBag.TextIndex = "Un text plasat in metoda Index din
controller Home" ;
return View();
}
public ActionResult About()
{
// Asa pot aduce inregistrari din baza de date
// de vazut directiva @model din About.cshtml
// Vom transmite aceasta colectie catre vizualizare
// (About.cshtml)
List<string > str = new List<string >();
for (int i = 0; i < 10; i++)
{
str.Add( "Item " + i.T oString());
}
ViewBag.TextAbout = "Am transmis la View o colectie
List<string>" ;
return View(s tr);
}
}
}
19
Pagina de start este î n _ViewStart.cshtml ce conț ine u rmătoarea declaraț ie – pagina
master folosită :
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
iar conținutul paginii _Layout.cshtml este:
<!DOCTYPE html >
<html >
<head >
<meta charset ="utf -8" />
<title>@ViewBag.Title </title>
<link href="@Url.Content( "~/Content/Site.css" )" rel="stylesheet"
type="text/css" />
<script src="@Url.Content( "~/Scripts/jquery -1.5.1.min.js" )"
type="text/javascript"></ script >
<script src="@Url.Content( "~/Scripts/modernizr -1.7.min.js" )"
type="text/javascript"></ script >
</head >
<body >
<div class ="page">
<!– <header> –>
<div id="title">
<h1>My MVC Application </h1>
</div>
<div id="logindisplay">
@Html.Partial( "_LogOnPartial" )
</div>
<nav>
<ul id="menu">
<li>@Html.ActionLink( "Home" , "Index" ,"Home" )</li>
<li>@Html.ActionLink( "Next" ,"LogOn" , "Account" )</li>
<li>@Html.ActionLink( "About" , "About" , "Home" )</li>
<li>@Html.ActionLink( "Default1 controller" ,"Index" ,
"Default1" )</li>
<li>@Html.Label( "expresie" , "Text label" )</li>
</ul>
</nav>
<!– </header> –>
<section id="main">
@RenderBody()
</section >
<footer >
</footer >
</div>
</body >
</html >
20
Vizualizarea pentru acțiunea About (se găseș te in View -> Home ->About.cshtml )
@model List<string >
@{
ViewBag.Title = "About Us" ;
}
<h2>@ViewBag.Message </h2>
<p> Adaugam continut aici…
<br />
<h2>@ViewBag.TextAbout </h2>
<ul>
<li>@ViewBag.TextAbout </li>
@ foreach (string s in Model)
{
<li>@s</li>
}
</ul>
</p>
RenderBody() . Metoda este referită ca pagină de Layout. Poate exista numai o metodă
RenderBody per Layout pagină. Este asemănătoare cu controlul ContentPlaceHolder .
Metoda indică unde va fi plasat template -ul vizualizării în conținutul elementului <body>.
RenderPage(). Paginile layout pot avea conținut ce poate fi adus de pe alte pagini.
RenderPage face exact acest lucru. Metoda are unul sau doi parametri.
RenderSection(). Metoda are un parametru ce indică numele secțiunii si unul de tip bool
ce semnifică dacă secțiunea este opțională sau nu.
Views -urile pot adăuga secțiuni folosind următoru l cod :
@section footer
{ <b> Pagina subsol aici </b> }
3.4.2 View -uri
Acțiunile expuse mai sus de că tre controller sunt: Index () [ exact ca index.html ] și
About ().
View este echivalent cu o pagina. View -urile trebuiesc create î n loca ția corect ă.De
exemplu, acțiunii Index din controller Home îi corespunde vizualizarea Index.cshtml plasată
în folderul \Views \Home \ și are numele Index.cshtml.
Regulă generală : Pentru fiecare acțiune există un view cu același nume ș i extensia
.cshtml, fișier plasat î n directorul : \Views \<nume_controller_fara_sufix_Controller> \
21
Pentru exemplul de mai sus avem: \Views \Home \Index.cshtml
\Views \Home \About.cshtml
3.4.3 Controllere
Control ler-ul este responsabil cu tratarea input -ului de l a utilizator (răspunde la
interacț iunile utilizatorului cu aplicația). Controllerul conține logica desfașurării aplicaț iei.
Un controller este o clasă al cărei nume trebuie să se ter mine (obligat) cu Controller și
este derivat din clasa Controller.
Exemplu -HomeController.cs
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class Home Controller : Controller
{
public ActionResult Index()
{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
ViewData["Title"] = "About Page";
return View();
}
}
}
22
4. Limbajul HTML
4.1. Noțiuni despre HTML
HyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea
paginilor web ce pot fi afișate într -un browser (sau navigator). Specificațiile HTML sunt dictate
de World Wide Web Consortium (W3C).
HTML se poate genera direct utilizând tehnologii de codare din partea serverului cum
ar fi PHP, JSP sau ASP. Multe aplicații ca sistemele de gestionare a conținutului, wiki -uri și
forumuri web generează pagini HTML.
HTML este de asemenea utilizat în email. Majoritatea aplicațiilor de email folosesc un
editor HTML încorporat pentru compunerea email -urilor și un motor de prezentare a email –
urilor de acest tip.
Caracteristicile și elementele componente ale unui document HTML:
<html> și </html> – orice document începe și se termină cu aceste tag -uri;
<head>…</head> – reprezintă porțiunea de ante t a documentului, aici se poate
introduce titlul documentului între tag -urile <title> și </title> , precum și alte elemente;
<body>…</body> – corpul documentului, cuprinde conținutul paginii HTML,
ceea ce va fi afișat pe ecran;
"<" și ">" – marcaje în document;
<br> – întrerupere de linie, de la "line break", echivalentul lui Enter;
<hr> introduce o linie orizontala și trecerea la un rând nou;
<pre>…</pre> – blocuri preformate – browser -ul va interpreta corect caracterele
"spațiu", "tab" și "enter" pentru un text introdus între aceste tag -uri;
<! ….> – introduce un comentariu.
Astfel, un document HTML are următoarea structură generală:
<html>
<head>
<title>Titlu</title>
</head>
<body>
Conținut pagină
<!– Acesta este un comentariu in HTML –>
</body>
</html>
23
4.1.1 Blocuri de text
Aceste etichete nu se referă la particularitățile caracterelor ce compun textul, ci la
funcțiile pe care le poate avea un bloc de text în cadrul paginii Web. Toate aceste etichete
produc automat trecerea la un rând nou și adăugarea unui spațiu suplimentar.
<address>…</address> – această etichetă introduce un bloc adresă;
<blockquote>…</blockquote> – textul introdus între aceste etichete este identat –
marginea din stânga textului este deplasată la dreapta la o anumită distanță față de marginea
paginii;
<pre>…</pre> – bloc pref ormat – este indicat pentru a insera rânduri vide (spațiu între
rândurile succesive). Caracterul " spațiu " poate fi luat în considerare de browser dacă este
inserat explicit prin
Într-un fișier HTML, caracterele " <" și " >" au o semnificație special ă pentru browser.
Ele încadrează comenzile și atributele de afișare a elementelor într -o pagină. Dacă dorim ca un
fragment de text să conțină astfel de caractere, acest fragment trebuie încadrat de una dintre
perechile de etichete:
<xmp>…</xmp> ( 80 de c aractere pe rând );
<listing>…</listing> ( 120 de caractere pe rând );
4.1.2 Blocuri paragraf
Cu ajutorul etichetei paragraf <p> este posibil trecerea la o linie nouă și permite:
• inserarea unui spațiu suplimentar înainte de blocul paragraf;
• inserarea unui spațiu suplimentar după blo cul paragraf, dacă se folosește
delimitatorul </p> (acesta fiind opțional);
• alinierea textului cu ajutorul atributului align, având valorile posibile "left", "center"
sau "right"
4.1.3 Blocuri de titlu
Într-un text titlurile ( head ers ) de capitole pot fi introduse cu ajutorul etichetelor <h1>,
<h2>, <h3>, <h4>, <h5>, <h6> .
Toate aceste etichete se refera la un bloc de text și trebuie însoțite de o etichetă de
încheiere similară </h1>, </h2>, </h3>, </h4>, </h5>, </h6> .
Aceste etich ete acceptă atributul align pentru alinierea titlului blocului de text la stânga
(în mod prestabilit), în centru și la dreapta. Tag -ul <h1> permite scrierea unui titlu cu caractere
mai mari și aldine, pe când <h6> folosește caracterele cele mai mici.
24
4.1.4 Linii orizontale
Într-o pagină Web pot fi inserate linii orizontale. Acest lucru se face cu ajutorul etichetei
<hr> . Pentru a configura o linie orizontală se utilizează următoarele atribute ale etichetei <hr> :
• align permite alinierea liniei orizontală. Valorile posibile sunt " left " ," center
" și " right ";
• width permite alegerea lungimii liniei;
• size permite alegerea grosimii liniei;
• noshade când este prezent definește o linie fără umbră;
• color permite definirea culorii liniei.
4.1.5 Imagini
Imaginile sunt stocate în fișiere cu diverse formate. Cele mai răspândite formate sunt
GIF(8biți pentru o culoare, 256 culori posibile) și JPEG (24biți pentru o culoare, 16777216 de
culori posibile).
Tag-ul folosit pentru inserarea unei imagini în pagină este <img> și are următoarele
atribute:
src = sursa, locul unde se afla imaginea, adresa URL("Uniform Resourse Locator" =
identificator unic al resursei); Dacă imaginea se afla în același director cu f ișierul HTML care
face referire la imagine, atunci adresa URL a imaginii este formată numai din numele imaginii,
inclusiv extensia
width = lățimea imaginii;
height = înălțimea imaginii;
alt = numele care înlocuiește imaginea până aceasta se încarcă sau cân d nu a fost găsită;
border = chenar (0 = lipsă bordură)
align = "center, right, left, top, middle, bottom" – alinierea imaginii în pagină
hspace =" nr.întreg ", vspace =" nr.întreg " – precizează dista nța în pixeli pe orizontală,
respectiv verticală, dintre imagine și restul elementelor din pagină.
4.1.6 Legături (Link -uri)
Legăturile (link -urile) reprezintă partea cea mai importantă a unei pagini Web. Ele
transformă un text obișnuit în hipertext sau hiperlegatură , care permite trecerea rapidă de la o
informație af lată pe un anumit server la altă informație memorată pe un alt server aflat oriunde
în lume.
Legăturile sunt zone active într-o pagină Web, adică zone de pe ecran sensibile la
apasarea butonului stâng al mouse -ului.
25
O legătură (link) este definită cu ajutorul etichetelor (tag -urilor) <a>…</a>, (de la
"anchor"=ancora) textul, imaginea sau paragraful plasat între aceste etichete formând link -ul,
și are atributele:
href – adresa fișierului destinație;
target – în ce fere astră se va deschide fișierul destinație:
• _blank pagina va fi încărcata într -o nouă fereastra;
• _parent pagina va fi încărcată în fereastra părinte;
• _top pagina va fi încărcată în fereastra top a cadrului;
title – mică descriere asociată legăturii afișată în momentul în care mouse -ul se află
deasupra legăturii
Legătura poate fi:
• pagină aflată în același director, realizată cu ajutorul atributului href, astfel: <a
href="nume_fisier_2.html">;
• o pagină de pe același disc local – se folosește adresa relativă la acel fișier : <a
href="exemple/list/listex_11.html"> ;
• o legătură către un site particular: <a href="http://www.ub.ro">;
• o adresă de e -mail: <a href='mailto:test@test.ro?subject="subiect
prestabilit"'>Trimite e-mail</a>;
• către un fișier oarecare: <a href="fisier.zip">
4.1.7 Liste
Unul din cele mai obișnuite elemente din documentele cu mai multe pagini este un set
de definiții, referințe sau indexuri. Glosarele sunt exemple clasice în acest sens; cuvintele sunt
listat e în ordine alfabetică, urmate de definiții ale termenilor respectivi. În HTML, întreaga
secțiune a unui glosar va fi gestionată printr -o lista de definitii , care este inclusă într -o pereche
de marcaje de lista de definiții : <dl>…</dl> (de la "definition list" = lista de definiții).
O listă neordonată este un bloc de text delimitat de etichetele corespondente
<ul>…</ul> ("ul" vine de la "unordered list" = listă neordonată). Fiecare element al listei este
inițiat de eticheta <li> (list item).
Lista va f i indentată față de restul paginii Web și fiecare element al listei începe pe un
rând nou.
O listă ordonată de elemente este un bloc de text delimitat de etichetele corespondente
<ol>…</ol> ("ol" vine de la "ordered list" = listă ordonată). Fiecare eleme nt al listei este inițiat
de eticheta <li> (list item).
26
4.1.8 Tabele
Tabelele ne permit să creăm o rețea complexă de câmpuri (celule), iar tabelele stau la
baza construirii marii majorități a paginilor Web. Fiecare celulă a tabelului are propriile opțiuni
pentru culoarea fondului, culoarea textului, alinierea textului etc.
Instrucțiuni:
<table>…</table> – inserează un tabel;
<tr>…</tr> – inserează un rând (tabel row);
<td>…</td> – inserează o celulă cu date;
Atributele tabelului (tabel/rând/celulă):
border – un număr întreg ce definește grosimea bordurii tabelului (poate fi 0 = lipsă
bordură – valoare implicită) : <table border="4">;
align – aliniază tabelul în pagina Web, și poate lua valorile left, center și right: <table
align="left"> ;
hspace și vspace – dau distanța dintre tabel și celelalte elemente din pagina Web;
cellspacing – atribut al tag -ului <table>, ce definește distanța (în pixeli) dintre celulele
tabelului – valoarea implicită este 2: <table cellspacing="4">;
cellpadding – definește distanța din tre marginea unei celule și conținutul ei, valoarea
implicită este 1: <table border="0" cellpadding="20">;
width și height – stabilesc lățimea și înălțimea unui tabel/celulă – pot fi nr întregi sau
procente din dimensiunea paginii: <table width="200" heigh t="50%">;
<caption> – atribuie un titlu tabelului, și poate lua valorile: bottom, top, left și right:
<table border="0"><caption align="top">Titlu_tabel;
<th> – table header – definește celule cap de tabel, conținutul lor este scris cu caractere
aldine și centrat: <th>Cap_tabel</th> ;
align – aliniază pe orizontală conținutul unei celule, și poate lua valorile: left, center,
right, char (aliniere față de un caracter): <td align="left">stanga</td>;
valign – aliniază conținutul celulei pe verticală: baseline, bottom, middle, top : <td
valign="bottom">jos</td>;
colspan – împreună cu <td> și <th> extinde o celulă peste celulele din dreapta sa – 3
celule unite: <td colspan="3">celule</td>;
rowspan – împreună cu <td> și <th> extinde o celulă peste celulele de dede subt – 4
celule unite: <td rcwlspan="4">celule</td>;
nowrap – aparține elementelor <td> și <th> și interzice întreruperea unei linii de text
o coloană cu o lățime oricât de mare: <td nowrap>celula_mare</td>;
27
4.1.9 Ferestre sau cadre în HTML
Ferestrele sau (ca drele) permit definirea în fereastra principală a unor subferestre în care
să fie încărcate documente HTML diferite.
Sub-ferestrele sunt definite într -un fișier HTML special, în care blocul
<body> …</body> este înlocuit de blocul <frameset> …</frameset> .
În interiorul acestui bloc, fiecare cadru este introdus prin eticheta <frame> .
Un atribut obligatoriu al etichetei <frame> este src, care primește ca valoare adresa
URL a documentului HTML care va fi încărcat în acel frame. Definirea cadrelor se face prin
împărțirea ferestrelor (și a sub -ferestrelor) în linii și coloane astfel:
• împărțirea în linii se face cu atributul rows al etichetei <frameset> ;
• împărțirea în coloane se face cu atributul cols al etichetei <frameset> ;
• valoarea atributelor cols și rows est e o listă de elemente despărțite prin virgulă,
care descriu modul în care se face împărțirea, și pot fi:
un număr întreg de pixeli;
procente din dimensiunea ferestrei (1 ÷ 99 %);
n * care înseamnă n părți din spațiul rămas
4.1.10 Atribute ale chenarelor
Culori pentru chenare: bordercolor – are valori specifice pentru culori, și pot însoți
etichetele <frameset> și <frame> ;
Dimensionarea chenarului unui cadru : border – pentru <frameset> – are valoarea în
pixeli, 0 = cadru fără chenar.;
Frameborder = 0 – nu se afișează chenarul cadrului;
Bare de defilare – scrolling – pentru <frame> – adaugă unui cadru o bară de derulare,
valori posibile: "yes", "no" și "auto";
Noresize – împiedică redimensionarea cadrului cu mouse -ul;
Marginheight și marginwidth – stabilesc distanța în pixeli dintre conținutul cadrului
și marginile verticale/orizontale, și pot lua valorile: număr de pixeli sau procent din
lățime/înălțimea cadrului;
28
4.1.11 Formulare
Un formular este un ansamblu de zone active alcătuit din butoane, casete de selecț ie,
câmpuri de editare etc.
Formularele ajută la realizarea paginilor Web care permit utilizatorilor să introducă
informații și să le transmită serverului. Formularele pot fi de la simple la foarte complicate. Un
formular este definit într -un bloc delimitat de etichetele corespondente <form> și </form> .z
Elementul FORM
<form [action=url] [method=get/post] [enctype=MIMEType] [onsubmit=script]
[onreset=script] [acceptcharset= set_caractere] [core] [international] [events]>
Elementul INPUT
<input [type=text|password|checkbox|radio|su bmit|image|reset|button|hidden|file]
[name=nume] [value=valoare][checked][disabled][readonly][size=latime][maxlength=cuvinte
_maxime] [src=url] [alt=altText][usemap=url] [align=left|center|right|justify][tabindex=numar] [
accesskey=keyCombo] [onfocus=script][onblur=script][onselect=script] [onchange=script] [acc
ept=set_caractere] [core] [international] [events]>
Acest element input este cel mai important in utilizarea formularelor.
Atributele esențiale ale elementului <form> sunt:
• action precizează ce se va întâmpla cu datele formularului odată ce acestea ajung
la destinație. <form action="http://www.yahoo.com/cgi -bin/nume_fis.cgi"> .
Script -urile pot fi scrise in limbajele Perl,C,PHP,Unix shell.
• method precizează metodă utilizată de browser pentru expedierea datelor
formularului. Sunt posibile următoarele valori:
• get (implicit) – caz în care datele din formular sunt adăugate la
adres a URL precizată de atributul action; nu sunt permise
cantități mari de date (maxim 1 Kb) – între adresa URL și date
este inserat un "?".
• post – caz în care datele sunt expediate separat. Sunt permise
cantități mari de date (ordinul MB)
Elementele unui form ular sunt definite cu eticheta <input> , care are următoarele
atribute:
• type – indică tipul datelor care vor fi introduse:
• text = text,
• submit = buton de trimitere / validare,
• reset = buton de reset / ștergere,
29
• password = parola, acest câmp de editare nu af ișează caracterele în clar,
ci numai caractere *, care ascund de privirile altui utilizator aflat în
apropiere valoarea introdusă într -un asemenea câmp.
• hidden = nu este vizibil,
• checkbox = caseta de validare, (checkbox) permite selectarea sau
deselectarea unei opțiuni;
• radio = buton radio, permit alegerea, la un moment dat, a unei singure
variante din mai multe posibile;
• file = fișier pentru upload;
• o select = listă de selecție – permite utilizatorului să aleagă unul sau mai
multe elemente dintr -o listă fi nită.
Majoritatea tipurilor de date type pot primi următorii parametrii:
Name – permite atașarea unui nume fiecărui element al formularului;
Value – permite atribuirea unei valori inițiale unui element al formularului
Size – numărul de caractere vizibile din câmp, dacă se depășește numărul de caractere
introduse, are loc o derulare a textului;
Maxlenght – numărul maxim de caractere introduse în câmpul de editare, caracterele
introduse în plus sunt neglijate;
Readonly – datele prezente în câmp nu pot fi mod ificate.
30
5. Baze de date SQL
5.1. Introducere în limbajul SQL
Baza de date reprezintă un depozit unic al tuturor da telor dintr -o organizație. Spre
deosebire de stocarea datelor în fișiere proprii, dispersate în formate diferite prin departamente
diferite și de multe ori redundante, baza de date stochează o singură dată o informație care este
vizibilă și poate fi accesată de mai mulți utilizatori simultan.
Acest mod unic de stocare a datelor oferă posibilitatea imp lementării unor funcționalități
foarte avantajoa se și ut ile în procesarea informațiilor.
Reducerea redundanțelor: datele stocate în fișiere dispersate conțin în foarte multe
cazuri dubluri ale datelor. De exemplu, în cadrul unei facultăți, numele si prenumele unui
student se regăsește în fișierele pe ca re le ține profesorul, apoi trebuie să fie și la secretariat, la
serviciul social, etc.
Aceeași informație stocată de mai multe ori. Este mult mai avantajos să fie stocată o
singură dată în baza de date unică și accesată de toate departamentele .
Evitarea i nconsistențelor: daca se modifică o adresă de exemplu, această modificare ar
trebui procesată în toate fișierele de la diverse departamente. Dacă un anumit departament nu
modifică adresa (din diverse motive: nu știe ca s -a schimbat adresa, sau uită pur și simplu, sau
introduce greșit noua adresă), atunci datele stocate în fișiere vor fi inconsistente: aceeași
informație va avea valori diferite la departamente diferite. In cazul utilizării bazei de date, acest
lucru nu este posibil deoarece acea informație e ste stocată o singură dată.
Aplicarea restricțiilor de securitate a datelor: se pot defini reguli de securitate prin care
se permite accesul utilizatorilor pe bază de parolă, iar fiecare utilizator are acces doar la un set
predefinit de date. De exemplu, u n student nu trebuie să aibă posibilitatea de a modifica o notă,
sau un profesor să pună note la discipline la care nu este repartizat.
Aplicarea regulilor de validare a integrității datelor: se pot defini diverse constrângeri
de validare a datelor care să nu permită introducerea de date eronate în bază. De exemplu, baza
de date nu permite înscrierea unui student l a grupa 6402 , dacă această grupă nu există în
structura organizatorică a facultății.
Independența între date și programele de aplicații: pot fi c onstruite o mulțime de aplicații
care să lucreze cu aceeași bază de date: o pagina WEB de afișare a listelor de studenți, o aplicație
desktop pentru profesor care să gestioneze notele la o disciplină, etc. Dezvoltatorul de aplicații
31
nu trebuie să se preocu pe de modul de stocare a datelor, ci doar de modul de regăsire și
modificare a acestora. In plus, se poate schimba structura bazei de date fără a necesita
modificarea aplicațiilor.
Bazele de date ce se remarcă prin stabilitate, capacitate de stocare, acce sare simultană
de către mai mulți useri, rapiditate în stocarea și selectia datelor sunt date de SQL Server sau
Oracle.
SQL Server reprezintă soluția propusă de Microsoft pentru aplicații cu baze de date și
este integrată cu pachetul Microsoft Visual Studi o .NET de construire a aplicațiilor.
SQL (Structured Query Language) este în prezent, unul din cele mai puternice limbaje
structurate pentru interogarea bazelor de date relaționale.
Este un limbaj neprocedural și declarativ , deoarece utilizatorul descrie ce date vrea să
obțină, fără a fi nevoie să stabilească modalitățile de a ajunge la datele respective. Nu poate fi
considerat un limbaj de programare sau unul de sistem, ci mai degrabă face parte din categoria
limbajelor de aplicații , fiind orientat pe mul țimi. Foarte frecvent, este utilizat în administrarea
bazelor de date client/server, aplicația client fiind cea care generează instrucțiunile SQL.
Pentru că există o standardizare a limbajului SQL, multe SGBD (Oracle, Access,
Sybase) recunosc principalele instrucțiuni ale acestuia.
Caracteristicile adăugate standardului se numesc extensii . De ex, în standard sunt
specificate 6 tipuri diferite de date pentru o BD SQL. În multe implementări, această listă este
completată cu o diversitate de extensii. Fiecare implementare se numește dialect . Dialectul
ACCSES conține unele particularități, fiind conceput mai mult pentru crearea interogărilor de
selecție .
Există 3 metode de bază privind implementarea limbajului SQL :
• apelare directă (Direct Invocation): constă în introducerea instrucțiunilor direct
de la prompter
• modulară (Modul Language): folosește proceduri apelate de programele
aplicație
• încapsulată (Embedded SQL): conține instrucțiuni încapsulate în codul de
program
Instrucțiunile SQL pot fi grupate în:
• instrucțiuni de definire a datelor, care permit descrierea structurii BD
• instrucțiuni de manipulate a datelor: adaugă, șterge, modifică înregistrări
• instrucțiuni de selecție a datelor, care permit consultarea BD
32
• instrucțiuni de procesare a tranzacțiilor
• instruc țiuni de control al cursorului
• instrucțiuni pivind controlul accesului la date
În limbajul SQL standardizat de ISO se folosesc termenii: tabel , coloană , rând .
5.2. Instrucțiuni pentru manipularea datelor
Foarte utile în exploatarea unei BD, aceste instrucțiuni se implementează prin
interogările de acțiune . Este necesară o mare precauție în utilizarea lor deoarece acțiunile sunt
ireversibile , putând influența inclusiv integritatea referențială a BD.
Cele ma i importante sunt: CREATE, INSERT, UPDATE și DELETE.
Interogările de acțiune tip CREATE duc la generarea unui nou tabel pornind de la
structura și conținutul unor tabele deja existente. Se folosește instrucțiunea SELECT … INTO
SELECT [domeniu] (câmp1,câmp2…)
INTO tabel_nou
FROM tabel_sursa
[WHERE criteriu_de_adăugare];
Interogările de acțiune tip INSERT sunt folosite pentru adăugarea de înregistrări dintr –
un tabel în altul. Există două forme ale instrucțiunii și anume:
• INSERT … VALUES
• INSERT … SELECT
In primul caz se adaugă o singură înregistrare într -un tabel , menționându -se câmpurile
și valorile acestora. Se utilizează pentru operații simple, care pres upun lucrul cu un număr redus
de înregistrări.
INSERT INTO nume_tabel (câmp1, câmp2…)
VALUES (valoare1, valoare2…);
Reguli:
Valorile din clauza VALUES vor avea aceeași natură cu câmpurile din clauza INTO
Mărimea valorii va fi < dimensiunea câmpului
Corespondență între câmp1 și valoare1, etc.
33
În al doile caz, este posibil să se copieze mai multe înregistrări dintr -un tabel în unul
sau mai multe tabele.
INSERT INTO tabel_destinație (câmp1, câmp2…)
SELECT [domeniu] câmp1, câmp2…
FROM tabel_sursă
WHERE criteriu_de_adăugare;
Reguli:
Numărul și natura câmpurilor din clauza INTO să fie aceleași cu cele returnate de
instrucțiunea SELECT
Dacă nu se introduce WHERE , toate înregistrările din tabel_sursă vor fi adăugate în
tabel_destinație
Interogările de acțiune tip DELETE șterg parțial sau total înregistrările dintr -un tabel.
Nu se folosește pentru ștergerea de valori din câmpuri individua le, ci acționează asupra
înregistrării în totalitatea ei. Daca se șterg toate înregistrările, structura de tabel rămâne, ea
putând fi eliminată numai cu DROP TABLE.
DELETE FROM nume_tabel
[WHERE criteriu_de_ștergere];
Ca și instrucțiunea INSERT, operația de ștergere a înregistrărilor dintr -o tabelă poate
duce la probleme de integritate referențială în alte tabele.
Interogările de acțiune tip UPDATE pot introduce înregistrări noi și pot modifica
valorile câmpurilor din înregistrări existente.
UPDATE nume_tabel
SET nume_câmp1=valoare1 [,nume_câmp2=valoare2]…
[WHERE criteriu_de_actualizare];
Ca și în celelalte locuri unde apare clauza WHERE, restricționarea se poate accentua
folosin d și operatori logici.
34
5.3. Modele de programare cu baze de date Entity Framework
Entity Framework folose ște un model numit Entity Data Model (EDM), dezvoltat din
Entity Relationship Modeling (ERM).
Entity Relationship Modeling define ște o sche mă a entit ăților și a rela țiilor dintre
acestea. Entit ățile definesc schema unui obiect, dar nu și comportarea lui. Entitatea este
asem ănătoare cu schema unei tabele din baza de date , numai c ă aceasta descrie schema
obiectelor problemei de rezolvat (schema obiectelor afacerii) .
Entity Data Model este un model pe partea de client si constituie fundamentul pentru
Entity Framework .
Articolele descrise de un Entity Data Model se numesc entit ăți.
Clasele ce sunt generate din entit ățile modelului precum și obiectele instan țiate din
acestea se numesc de asemenea entit ăți , clase entit ăți sau obiecte entit ăți.
Între entit ăți pot exista rela ții identificate prin propriet ăți de navigare .
Baza de date pe care o folosim nu are impact asupra modelului. Putem folosi Oracle,
SqlServer etc. Comunicarea cu baza de date se face prin furnizorii de ADO.NET pentru baza
de date respectiv ă. Avem nevoie sa identific ăm providerul si stringul de conexiune la baza de
date și cu aceste informatii Entity Framework va reactualiza baza de dat e.
Figura 5.1 – Relațiile dintre diferitele componente ale unei aplicații ce folosește
Entity Framework
35
Object Services furnizează functionalitatea necesară de a lucra cu obiecte din entități.
Clasa EntityObject gestioneaz ă orice clas ă mostenit ă din aceasta:
• Rezultate cereri ;
• Gestionare modificări în baza de date;
• Salvarea modificărilor în baza de date;
• Serializare (XML și binar);
După ce a fost instan țiat un obiect entitate, ObjectServices gestioneaz ă toate
modifi cările suferite de acesta și le va folosi atunci cand se cere salvarea datelor în baza de date.
ObjectServices construi ește comenzile Insert , Update , Delete pentru fiecare obiect
adăugat, modificat sau șters. Gestiune relații și chei străine (Foreign Keys) – Entity Data Model
designer generează aceste relații plecând de la structura bazei de date.
EntityClient este API principal din Entity Framework . Furnizează funcționalitatea de a
lucra cu cereri și comenzi, regăsind rezultate.
EntityClient este folosit în special pentru a obține date folosite in rapoarte. Datele
raportate de EntityClient sunt în formă tabelară (read only) în timp ce Object Services va
transforma aceste date create de EntityClient în obiecte.
5.4. Entity Data Model (EDM)
Un EDM poat e fi v ăzut ca leg ătura dintre aplica ție si baza de date. Ne dă posibilitatea de
a lucra cu modelul conceptual al datelor și nu cu schema bazei de date.
EDM este folosit pentru orice interacțiune cu baza de date, pentru a regăsi date sau a le
salva. Modelul conceptual, modelul de memorare și mapările dintre cele două sunt definite în
fișiere bazate pe scheme XML și au următoarele extensii:
• Conceptual schema definition language (CSDL) – define ște modelul
conceptual.CSDL este implementarea Entity Framework pentru Entity Data
Mode(EDM).Extensia fișierului este .csdl
• Store schema definition language (SSDL) – define ște modelul de memorare,
care mai este numit și modelul logic. Extensia fi șierului este .ssdl.
• Mapping specification language(MSL) – definește mapăr ile dintre modelul de
memorare și cel conceptual. Extensia fișierului este .mls.
Modelul de memorare și mapările pot fi schimbate fara a fi nevoie să schimbăm modelul
conceptual .Deoarece modelul de memorare este specific furnizorului bazei de date, se poate
lucra cu modelul conceptual pe diferite tipuri de surse de date.
36
5.5. Maparea obiectelor la date
În general unei tabele îi corespunde o singur ă clasă si rela țiile dintre clase sunt
reprezentate adesea în mod diferit fa ță de rela țiile dintre tabele. De e xemplu , pentru a reprezenta
un client pentru o comand ă, clasa Order poate s ă foloseasc ă o proprietate ce con ține o refer ință
la clasa Customer, în timp ce o înregistrare din baza de date din tabela Order con ține o coloa nă
“foreign key” cu o valoare ce corespunde la valoarea unei chei primare din tabela
Customer.
Clasa Customer poate s ă aibă o proprietate numit ă Orders, ce con ține o colec ție de
instan țe a clasei Order, în timp ce în tabela Customer din baza de date nu exist ă o asemenea
coloan ă. O rezolvare a acestei probleme o constituie maparea claselor si propriet ăților la
tabelele și coloanele tabelelor.
Entity Framework mapează tabelele relaționale, coloanele si cheile străine din modelul
logic la entități si relații în modelul c onceptual.
Utilitarele pentru EDM (Entity Data Model) genereaz ă clase extensibile bazate pe
modelul conceptual. Acestea sunt clase par țiale și pot fi extinse de către dezvoltator. Implicit,
clasele care sunt generate pentru un model conceptual partic ular sunt derivate din clasele
de baz ă ce furnizeaz ă servicii pentru materializarea entit ăților ca obicte și pentru gestionarea
și salvarea modific ărilor efectuate. Dezvoltatorul folose ște aceste clase pentru a lucra cu
entitățile și relațiile ca obiecte rela ționate prin asocieri. Aceste clase pot fi personalizate de
către dezvoltator.
5.6. Accesare și modificare date din entități
Entity Framework folosește informațiile din model și fișierele de mapare pentru a
translata cererile asupra obiectelor din modelul conceptual în cereri specifice sursei de date.
Entity Framework furnizează urmatoarele modalități de a interoga modelul conceptual
și a retur na obiecte:
• LINQ to Entities. Furnizează suport pentru Language -Integrated Query (LINQ)
in vederea interogării tipurilor de entități definite in modelul conceptual.
• Entity SQL. Un dialect SQL independent de mediul de memorare ce lucrează
direct cu entități le în modelul conceptual.
• Metode de construcție a cererilor folosind LINQ.
37
Entity Framework include furnizorul de date EntityClient, furnizor ce gestionează
conexiunile, parsează cererile asupra entităților în cereri specifice sursei de date și retu rnează
un DataReader folosit de Entity Framework pentru a materializa datele din obiecte.
Entity Data Model (EDM) folose ște urm ătoarele concepte pentru a descrie structura
datei:
• Tip entitate (entity type);
• Tip asociere (association type);
• Proprietate (property).
Entity type – descrie structura datei cu EDM – sunt construite din proprietăți si constituie
un template pentru entități (definiția unei clase este un template pentru instanțele clasei).
Fiecare entitate trebuie s ă aibă o cheie unic ă. O mul țime de entit ăți este o colec ție a
insta nțelor tipului entit ății specificate. Mul țimile de entit ăți sunt grupate în mod logic într-un
container – EntityContainer. Mo ștenirea este suporta tă între tipurile de entit ăți.
Un tip asociere ( association type) numit simplu și asociere descrie rela țiile din EDM.
Asocierea reprezint ă o rela ție între două tipuri de entit ăți (ex. Customer si Order).
Multiplicitatea unei asocieri poate fi 0..1 sau mai multe.
Entit ățile ce folosesc asocieri pot fi ac cesate prin propriet ățile de navigare sau prin
“foreign key”. Instan țele asocierilor sunt grupate în mod logic în “entity container”.
Tipurile entit ăți con țin propriet ăți ce definesc structura acestora. Ex. entitatea Customer
poate avea propriet ățile Custo merId, Name, Address. O proprietate poate con ține tipuri
primitive(string, int, Boolean, etc) sau tipuri structurate(tipuri complexe).
Fișierul XML ce descrie EDM (Entity Data Model) conține două secțiuni principale :
Informații pentru runtime ;
• Modelul de memorare ;
• Modelul conceptual;
• Maparea
Informa ții pentru Designer ;
CSDL este implementarea Entity Framework pentru Entity Data Model (EDM). Schema
conceptuală a CSDL este următoarea:
• EntityContainer
• EntitySet
• EntityType
38
EntityContainer constituie punctul principal pentru a executa cereri asupra modelului.
Are un atribut: LazyLoadingEnabled ="true" ce indică modul de creare al modelului (de la baza
de date la mo del sau invers), folosit numai în fiș ierul EDMX.
Figura 5.2 – Schema conceptuală a CSDL (Conceptual Schema Definition Language).
EntitySet este un container de tip entitate și are atributele Name și EntityType.
<EntitySet Name=”Addresses”
EntityType=”SampleModel.Addres” />
<EntitySet Name=”Contacts”
EntityType=”SampleModel.Contact” />
EntityType este tipul de dată din model.
39
6. Limbajul JavaScript
6.1. Introducere în limbajul JavaScript
JavaScript este un limbaj de programare orientat conceput de cei de la
Netscape(Brendan Eich) în anul 1995 cu scopul de a crește interactivitatea la nivelul paginilor
web.
Îți permite să implementezi lucruri complexe pe paginile web, de fiecare dată când o
pagină web face mai mult decât să afișeze informații statice pentru ca tu să te uiți afișând
actualizări de conținut în timp util sau hărți interactive, grafice animate 2D/3D, video
jukebox,etc.
Scripturile JavaScript sunt introduse în pagina HTML și sunt interpretate și executate
de browser. Browserele stochează în memorie paginile web sub forma unor arbori de obiecte
ce sunt manipulați apoi și citiți de către aceste scripturi. Această metodă de reprezentare a
paginilor web se numește DOM. Scripturile JavaScript sunt portabile datorită faptului că DOM –
ul pus la dispoziție de un browser trebuie să respecte un anumit standard W3C. Un alt avantaj
adus de utilizarea JavaScript este securitatea, scripturile fiind securizate în raport cu marea
majoritate a clienților web. Această caracteristică a limbajului se realizează și prin faptul că
JavaScript nu poate face apeluri către sistemul de operare. Deși, aparent, aceasta pare a fi un
minus al limbajului, în realitate aceste limitări au fost puse intenționat asupra operațiilor la nivel
de client, pentru a crește securitatea.
Utilizarea JavaScript aduce și dezavantaje precum timpii adiționali necesari pentru a -l
descărca sau variația interpretării scripturilor datorată faptului că există mai multe mecanisme
de rendare a layout -urilor.
Există trei forme ale limbajului JavaScript:
• CSJS (Client -Side JavaScri pt) – reprezintă o versiune extinsă a JavaScript
folosită pentru îmbunătățirea funcționalităților paginilor web și a navigatoarelor
web folosite de client;
• SSJS (Server -Side JavaScript) – reprezintă o versiune extinsă a JavaScript
folosită pentru accesarea în fundal a bazelor de date, a sistemelor de fișiere și a
server -elor;
• Core JavaScript – reprezintă limbajul JavaScript de bază, CSJS și SSJS fiind
dependente de acesta.
40
Versiunea cea mai utilizată este CSJS, codul rezultat fiind inclus direct în document ul
HTML sau introdus într -un fișier de tip .js care va fi referit în documentul HTML.
Se creează astfel o pagină HTML dinamică și interactivă, ce poate prezenta următoarele
funcționalități: verificarea faptului că adresa de e -mail introdusă în câmpul cores punzător al
unui formular este una corespunzătoare (nu se verifică existența ei, ci faptul că respectă șablonul
clasic al unei adrese de e -mail), verificarea faptului că un câmp al formularului a fost completat,
etc.
Codul JavaScript este executat abia dup ă finalizarea completării formularului și apăsării
butonului de trimitere. Principalul avantaj al acestui limbaj de programare este reprezentat de
faptul că, fiind un limbaj interpretat de către navigatoarele web, nu este necesar un compilator.
6.2. Tipuri de date și variabile
În JavaScript există următoarele tipuri de date : tip șir; tip număr întreg; număr întreg î n
baza 10, 8 sau 16. O variabilă se poate declara cu particular “var” și poate primi orice valoare,
nu se declară tipul ei.
Operatori aritmetici : +, -, * /, % ;
Operatori relaț ionali : <, <=, >, >= ;
Operatori de egalitate = = pentru test egalitate;
!= pentru test inegalitate;
Operatori logici
! (negarea logică);
|| operatorul logic “sau” (este operator binar): dacă cel puțin unul din operanzi
este true, rezultă true, altfel rezultatul este false ;
&& operatorul logic “ș i”;
Operatori logici pe biț i
<< ,>> operatori de deplasare ;
& – “și” pe biți;
| – “sau” pe biți;
۸ – “sau exclusiv ” pe biți;
~ – “negarea pe biți” – are rolul de a inversa conț inutul ;
Operatorul condi țional : exp1 ? exp2:eexp3;
Operatorul de concatenare pentru ș iruri este + .
41
6.3. Instrucțiuni
Instrucț iunile următoare au aceeși sintaxă și semantică ca și î n limbajul Java:
IF;
Switch;
While;
Do While;
For;
6.4. Funcții predefinite
Alert ( “mesaj”) – afișează o casetă în care se afișează “mesaj”.
Confirm( “mesaj ”) – caseta afișează date de tip ș ir. Utilizatorul poate apăsa butonul
OK , caz în car e se returnează true, sau cancel, caz în care se returneaza false.
Prompt ( șir_afișat, șir_așteptat) – caseta afișează șir_afișat și așteaptă introducerea
valorii în șir_așteptat. Șir_așteptat poate fi inițializat cu zero.
Eval(s) – e un s tring, care conține operații matematice (d. ex.:.“2+4“). Funcția returnează
rezultatul acestei operații, în acest caz 6. Dacă nu este vorba despre o expresie calculabilă,
atunci se returnează un mesaj de eroare.
isFinite(n) – decide dacă numărul n este finit.
isNaN(x) – verifică dacă valoarea x este un nr. valabil (not -a-number). Funcția
returnează valoarea true, daca x e un număr.
Number(x) – convertește conținutul obiectului x în număr și îl returnează.
ParseInt (șir) – convertește un șir către un întreg. Conversia s e face până când este
întîlnit un caracter care nu este cifră.
ParseFloat(șir) – convertește un șir către o valoare reală. Conversia se face până când
este întîlnit un caracter care nu este cifra.
În JavaScript putem introduce un text în mod dinamic, pute m introduce și tag -uri
HTML.
42
7. Aplicație web pentru gestionarea temelor de licență
O aplicație web este o aplicație ce rulează prin intermediul unui navigator gen Internet
Explorer, Netsc ape, Mozilla, Opera, sau a alte navigatoare asemenea celor menț ionate. Marele
avantaj al unei astfel de aplicații este că necesită resurse minime de instalare și întreținere și
oferă î ntreaga putere a clasicelor aplicaț ii des ktop.
Oferă utilizatorilor o interfață unică de utilizare, ceea ce implică cheltuieli minime de
întreținere și suport clienți. Aplicația rulează în sistemul client -server ș i permite accesul la un
set centralizat de date.
Pentru implementarea aplicației am utilizat tehnologia ASP.NET MVC în Visual Studio
Community 2017 iar sistemul de gestiune al b azei de date este Microsoft SQL Server.
Una d intre cele mai importante calităț i ale ASP.NET es te timpul redus necesar
dezvoltării aplicaț iilor web. ASP.NET cuprinde toate tehnologiile nece sare pentru a dezvolta o
aplicație web scriind cantitate minimă de cod.
Visual Studio include un set complet de instrumente de dezvoltare pentru generarea de
aplicații ASP.NET, Servicii Web XML, aplicații desktop și aplicații mobile. Visual Basic,
Visual C++, Visual C# și Visual J# toate folosesc același mediu de dezv oltare integrat (IDE)
care le permite partajarea instrumentelor și facilitează crearea de soluții folosind mai multe
limbaje de programare. Aceste limbaje permit să beneficieze de caracteristicile .NET
Framework care oferă acces la tehnologii cheie care si mplifică dezvoltarea de aplicații web
ASP și XML Web Services.
7.1. Structura de bază și funcționalitățile aplicației
Scopul acestei lucrări este realizarea unei aplicații web care să faciliteze comunicarea
dintre sutdenț i și profesori, în procesul de e laborare a unei lucrări de licență.
Teme propuse – pagina de start unde sunt afișate temele de licență propuse și profesorii
coordonatori ale acestora. Această este pagina principală a aplicației, de unde studenții se pot
informa în vederea alegerii profesorului d e licență în funcție de tematica preferată de student.
Adăugare teme licență – pagina unde se introduc temele de licență propuse de către
profesorii din cadrul facultații de Inginerie Electrică, Energetică și Informatică Aplicată.
Butonul de logare – interfața este diferită pentru cei autentificați drept profesori/admin
față de studenți sau simpli vizitatori. Acest lucru se datorează faptului că funcționalitățile
43
aplicației pentru profesori sunt mult mai complexe.Acest dinamism se datorează folosirii pe
partea de client a funcției ajax. Cu ajutorul acesteia, se fac cereri către partea de server doar
pentru anumite „bucăți de pagină”. Simplitatea poate fi considerată o calitate a interfeței pentru
că, prin ea, s -a încercat menținerea atenției utilizatorului către funcționalitățile folosite la un
anumit moment, și aducerea de funcționalități de pe partea de server, în funcție de nevoile
utilizatorului. În acest mod el este concentrat doar pe ce parte are nevoie iar pagina are o
structură simplă și intuitivă. Interfața pentru utilizatorii de tip student este diferită față de cea
pentru utilizatori de tip profesor, realizând o distincție clară între funcționalități. La nivel
conceptual am putea vorbi despre două aplicații care împărtășesc aceeași bază de date. P entru
a putea beneficia de funcționalitățile aplicației
Sortare – în tabelul creat anterior putem sorta atât profesorii coordonatori, temele de
licență propuse și profilele în funcție de ordinea alfabetică.
Căutare în aplicație – pentru ultilizatorii de ti p student am implementat butonul de
„căutare” care îi vor ajuta să caute în aplicație profesorii interesați, temele de licență sau
profilele la care aceștia fac parte.
7.2. Utilizarea aplicației
7.2.1 Gener alități
Aplicația web de gestionare a temelor de licență este definită ca o soluție integrată,
inteligentă și bazată pe internet pentru sistemul actual de învățământ. În acest sistem,
administratorul și profesorul vor avea numele de utilizator unic și o parolă pentru a se putea
loga în sistem.
Aplicația se împarte î n două roluri:
• Admin;
• Student;
Opțiunile utilizatorilor:
Utilizatorul ADMIN
• Adaugă teme de licență propuse de către profesori.
• Atribuie temelor adăugate specializările la care acestea sunt propuse.
• Atribuie temele adăugate profesorilor cărora le aparțin.
• Poate șterge profesorii.
• Poate șterge temele de licență care nu mai sunt dorite de către profesori
pentru a mai fi propuse studenților.
44
Utilizatorul STUDENT
• Poate să consulte toate temele propuse de către profesorii din cadrul
Facultatății de Inginerie Electrica, Energetică și Informatică Aplicată
pentru a se informa înainte ca acesta să își aleagă profesorul indrumător.
Figura 7.1 – Interfața grafică a plicației web de gestionare a temelor de licență .
7.2.2 Bara de navigare
Interfața grafică a aplicației conține în partea superioară, bara de navigare. Aceasta este
elementul care apare în toate paginile și care are drept scop menținerea funcționalităților de
bază și împărțirea acestora î n trei categorii: cele care privesc temele propuse de către profesori,
cele prin care se pot adăuga temele de licență și cele care prin care se pot adăuga profesorii
coordonatori. Aici apare și numele utilizatorului autentificat, opțiunea de ieșire din cont și
optiunea prin care se pot vedea totate proiectele propu se.
Figura 7.2 – Bara de navigare.
45
Codul pentru bara de navigare este următorul:
<div class ="navbar navbar -inverse navbar -fixed -top">
<div class ="container">
<div class ="navbar -header">
<button type="button" class ="navbar -toggle" data-toggle ="collapse" data-
target =".navbar -collapse">
<span class ="icon -bar"></ span>
<span class ="icon -bar"></ span>
<span class ="icon -bar"></ span>
</button >
@Html.Act ionLink( "Teme propuse" , "Index" , "Home" , new { area = "" }, new
{ @class = "navbar -brand" })
</div>
<div class ="navbar -collapse collapse">
<ul class ="nav navbar -nav">
<li>@Html.ActionLink( "Adaugare teme licenta" , "Index" , "BachelorsThem
es")</li>
<li>@Html.ActionLink( "Adaugare profesor" , "Index" , "Teachers" )</li>
</ul>
@Html.Partial( "_LoginPartial" )
</div>
</div>
</div>
7.2.3 Căutare în aplicație
Pentru utilizatorii acestei aplicații se pot realiza trei tipuri diferite de căutări: căutarea
bazată pe numele profesorului îndrumător, căutare bazată pe numele temei de licența propusă
și căutare bazată pe profilul facultății.
Figura 7.3 – Opțiunea de căutare .
În formularul de căutare, prezent pe parcursul întregii utilizări a aplicației, se poate
specifica doar o parte din numele profesorului sau temei de licență. În cazul în care în acest
formular nu este introdusă nici o informație și e ste declarată căutarea, toate obiectele în care se
caută vor fi afișate în tabelul de rezultate. Acțiunile care se pot face asupra rezultatelor sunt
aceleași ca și în cazul obiectelor accesate din restul paginilor.
46
7.2.4 Autentificarea în cadrul aplicației
Pentru a putea beneficia de funcționalitatea aplicației trebuie ca utilizatorul să fie
autentificat. Acest lucru presupune crearea unui cont, lucru care se poate face accesând pagina
de înregistrare. Dupa completarea formularului cu datele cerute, se poat e trece la partea de
autentificare.
Figura 7.4 – Modul de autentificare în cadrul aplicației.
7.2.5 Adăugare teme licență
Un utilizator de tip „admin”, care s -a înregistrat pentru prima dată, va putea accesa din
bara de navigare pagina „Adaugare teme licen ță”. Acesta va fi redirecționat pe o nouă pagină
care conține un tabel fără niciun rând .
Figura 7.5 – Interfața grafică a paginii „Adăugare teme licență”.
47
Pe această pagină se va găsi și un buton , care are drept scop adăugarea de proiecte
propuse pen tru licență .
Figura 7.6 – Buton de adăugare a temelor de licență.
Funcția acestuia este de a înlocui tabelul afișat inițial cu un formular în care se
completează numele noii teme de licență.
Figura 7.7 – Opțiunea de adăugare a unei teme de licență.
În cazul în care un profesor consideră că un anumit proiect ar trebui să nu mai apară în
listă, din varii motive, există opțiunea de ștergere. Acest lucru se realizează cu ajutorul
butonului „Ștergere”. Această funcție poate fi utilizată după ce vom adauga în tabel teme
propuse. Odată folosită această funcție va șterge definitiv acea temă din baza de date.
Figura 7.8 – Opțiunea de ștergere a unei teme adăugate.
48
7.2.6 Adăugare profesor coordonator
Utilizatorul de tip „admin”, după ce a adăugat temele de licență propuse studenților
poate accesa din bara de navigare pagina „Adăugare profesor” . Acesta va fi redirecționat pe o
nouă pagină care conține un tabel fără niciun rând.
Figura 7.9 – Interfața grafică a paginii „Adăugare profesor”.
În cadrul aces tei pagini se va găsi și un buton, care are drept scop adăugarea de profesori
coordonatori.
Figura 7.10 – Buton de adăugare a profesorilor coordonatori.
49
Funcția acestuia este de a înlocui tabelul afișat inițial cu un formular în care se
completează numele profesorului, se v -a selecta tema propusa, introdusă anterior iar apoi se va
selecta și profilul/profilele la care aceasta este valabilă.
Figura 7.11 – Opțiunea de adăugare a profesorului și selectarea temei propuse.
În cazul în care un profesor este nevoit sa fie șters din varii motive, exista și aici opțiunea
de ștergere. Acest lucru se realizează cu ajutorul butonului „Ștergere”. Această funcție poate fi
utilizată după ce vom adăuga în tabel profesorii coordonatori. Odată folosită această funcție va
șterge definitiv profesorul din baza de date.
Figura 7.12 – Opțiunea de ștergere a unui profesor.
50
7.2.7 Utilizare de către student
Pentru un utilizator de tip student, aplicația are aceeași interfață și aceeași structură,
adaptată funcționalităților pe care le are. Bara de navigare, ca și în cazul utilizatorului de tip
admin, este elementul central care apare în toate pe toate celelalte pagini. Mare parte din acțiuni
se găsesc aici. Principala este directarea către prima pagină. Ace asta afișează toți profesorii
facultății urmat de temele de licență propuse pentru studenți și de profilul în care acestea se
încadrează.
Figura 7.12 – Interfața grafică aplicației utilizată de către un student .
51
8. Concluzii
Mediul universitar generează foarte multe articole și idei, este un mediu vibrant care în
fiecare an aduce noutați atât pentru profesori cât și pentru studenți. Încercarea de a echilibra și
de a satisface cerințele unui public larg sunt adeseori greu de realizat dacă nu chia r imposibile.
În zilele noastre, importanța internetului este deja cunoscută iar exploatarea
oportunităților oferite de acesta ar trebui să fie o prioritate pentru o facultate. Un web site îl
realizezi o singură dată și rămâne permanent 24/24 în atenția pu blicului țintă.
La baza aplicației web de gestionare pentru gestionarea temelor de licență, stă limbajul
de programare ASP.NET, care este un limbaj foarte puternic și foarte folosit de către
programatori. De aceea am ales acest limbaj pentru implementarea aplicației. Consider ca
ASP.NET ocupă un loc destul de important în această lume și are un rol deosebit în dezvoltarea
noilor tehnologii.
Așa cum se observă și în capitolul în care este prezentată arhitectura, aplicația aceasta
este una extensibilă. Noi fu ncționalități pot fi adăugate cu ușurință, una dintre ele ar fi
conectarea la Github care facilitează accesul la codul sursă scris de studenți. Profesorii ar putea
vedea codul pe care un student l -a scris pentru elaborarea licenței, având u n control mult m ai
mare asupra activității acestuia.
52
9. Bibliografie
1. Stephen W., 2008, ASP.NET 3.5 Unleashead, Ed. Sams.
2. Adrian N., Marian N,. Nicolae O., Rodica P., Cristina S., Daniela T., 2008
Introducere în .NET Framework, Ed. de Byblos SRL.
3. Paolo P., Marco R., 2010, Programming Microsoft LINQ in Microsoft .NET
Framework 4, Ed. O’Rielly Media, Inc
4. Stephen W., Kevin H., Nate D., 2010, ASP.NET 4 Unleashead, Ed. Sams
5. JavaScript, https://ro.wikipedia.org/wiki/JavaS cript
6. Thomas Powell, HTML: The Complete Reference, Fifth Edition.
7. Paolo P., Marco R., 2007, Introducing Microsoft Linq, Ed Microsoft Press.
8. Microsoft_Press_eBook_Introducing_Microsoft_SQL_Server_2012
9. Programming Entity Framework,DbContext.
10. Programming Entity Framework, 2nd Edition.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Licenta Stefan Ciucanel 1 [625898] (ID: 625898)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
