Dezvoltarea Aplicațiilor Web Folosind Java

INTRODUCERE

Lucrarea de față, așa cum sugerează și titlul, “Dezvoltarea aplicațiilor Web folosind Java”, își propune prezentarea tehnologiilor Java utilizate în dezvoltarea de aplicații Web. Pe parcursul acestei lucrări, cu excepția cazurilor când se specifică explicit altceva, referirile la limbajul Java sunt în concordanță cu versiunea 8.

Lucrarea este structurată în patru capitole intitulate: Limbajul Java, Aplicații web, Tehnologii folosite pentru dezvoltarea aplicațiilor Web și Prezentarea aplicației. De asemenea beneficiază de o bibliografie selectivă cu 11 titluri, ordonate cronologic crescător.

Primul capitol, Limbajul Java, tratează caracteristicile semnificative ale limbajului de programare Java (deoarece proprietățile limbajului sunt numeroase au fost alese doar cele mai importante).

Cel de-al doilea capitol, intitulat Aplicații Web, prezintă noțiunile teoretice referitoare la aplicațiile web și cuprinde patru secțiuni. Aici sunt expuse noțiunea de aplicație web și caracteristicile acesteia. De asemenea sunt enumerate câteva dintre avantajele utilizării aplicațiilor web, problemele specifice aplicațiilor web și arhitectura aplicațiilor web.

Următorul capitol al lucrării (capitolul trei), realizează prezentarea Tehnologiilor folosite pentru dezvoltarea aplicațiilor web în Java și este structurat pe sase secțiuni. Inainte de a prezenta sectiunile am realizat o scurta introducere a acestora si aratand de ce sunt necesare in dezvoltarea unei aplicatii web.

Prima secțiune prezintă limbajul de marcare HTML (HyperText Markup Language), un limbaj care este realizat in crearea paginilor web care pot fi expuse într-un browser . Acest limbaj ne ajuta putem insera cod Java in pagini HTML cu ajutorul unor etichete speciale JSP.

Următoarele două secțiuni se referă la două aspecte foarte importante în implementarea unei aplicații Web în Java, si anume Servlet-urile și JavaServer Pages (JSP-urile). Atat servlet-urile, cat si jsp-urile au devenit o alegere populara in dezvoltarea aplicatiilor web. Principiul cel mai important atunci cand se utilizeaza Servlet-urile si JSP-urile in programare este faptul ca utilizatorilor nu trebuie niciodata sa li se permita sa acceseze direct pagina JSP, ceea ce inseamna ca utilizatorul poate accesa direct o sursa statica sau un servlet.

Continuam cu alte doua sectiuni importante si anume MySQL Database Server si JDBC API. Prin intermediul si cu ajutorul acestor tehnologii avem acces la datele din baza de date, date cu care vom opera in vederea obtinerii aplicatiei web. Tehnologiile sunt prezentate in paginile ce urmeaza.

Ultima sectiune a capitolului trei ne prezinta un instrument care furnizează o serie de sarcini predefinite in vederea obtinerii unei aplicații web in Java, Apache Ant .

Ultimul capitol al acestei lucrări este dedicat prezentării aplicației ”Library Online”. Aplicația Library Online se dorește a fi un exemplu didactic de utilizare a tehnologiilor necesare in dezvoltarea unei aplicatii web in Java . Pe parcursul acestui capitol sunt prezente o mulțime de imagini edificatoare pentru comportamentul aplicației . Capitolul debutează cu prezentarea tehnologiilor folosite în dezvoltarea aplicației.

Sectiunea a doua este structurata pe doua subsectiuni, dupa cum urmeaza : Descrierea interfetei grafice si Descrierea bazei de date. In prima subsectiune, cu ajutorul imaginilor, am prezentat aplicatia propriu-zisa, iar in sectiunea urmatoarea am descris baza de date care este realizata pe SGBD-ul MySQL.

Capitolul 1

LIMBAJUL JAVA

Tehnologia face parte din fiecare zi din viata noasta, devenind din ce in ce mai importanta. Este de la sine înțeles că putem fi conectați la internet și putem avea acces la aplicații și conținut oriunde, oricând.O conexiune puternica s-a instalat intre Java si Internet, fapt care a determinat ca foarte multe companii sa utilizeze Java ca si limbaj de programare in dezvoltare de aplicatii.

Astăzi, limbajul Java nu numai că pătrunde pe Internet, dar, de asemenea, Java se află în spatele multora dintre aplicațiile și dispozitivele pe care le accesăm zilnic. Java este fundamentul pentru aproape orice tip de aplicație în rețea și este standardul global pentru dezvoltarea și livrarea de aplicații integrate și mobile , jocuri , conținut bazat pe web și software pentru mediul enterprise .

Limbajul Java dispune de o multime de caracteristici , iar in randurile urmatoare voi prezenta o parte dintre acestea:

nu este greu de utilizat – este accesibil atat pentru persoanele care nu am mai programat, cat si pentru persoanele cu experienta de programare

simplu – sunt eliminate cateva aspecte din limbajul C++, cum ar fi: pointerii si mostenirea multipla . De asemenea apare un mecanism numit colector de gunoaie (garbage collection), care atunci cand este in functiune elibereaza memoria cu ajutorul unui fir de executie.

nu depinde de platforma – masina virtuala Java , creata odata cu instalarea limbajului permite compilatorului sa genereze o serie de instructiuni-masina pentru platforma curenta. Conditia indeplinita : “Write once, run everywhere”, este realizata cu ajutorul mediului de executie care are in componenta bibliotecile standard si mecanismul de interpretare.

viteza de executie este mica – majoritatea partilor din Java sunt interpretate, acestea nemaitrebuind a fi compilate, in schimb cele care consuma timp, trebuiesc compilate. Daca se doreste ca viteza sa se mareasca , acest lucru este posibil cu ajutorul mediului automat generat de Java prin intermediul unui mecanism ce se executa nativ in platforma respectiva.

orientat pe obiect – aceasta caracteristica este privita ca implicita in ceea ce priveste limbajul Java, fiind considerata si cea mai importanta proprietate. Aspectele ce tin de aceasta proprietate sunt dupa cum urmeaza: mostenire, obiecte, clase, incapsulare, modificatori de acces, trimitere de parametrii si biblioteci specifice. Nu sunt prezente varibilele globale si nici astfel de functii.

distribuit -ofera posibilitatea de a folosi atat obiectele la distanta , cat si cele locale. Poate fi utilizat in realizarea de aplicatii web simple si distribuite, dar si in aplicatii de retea (datorita protocoalelor HTTP, FTP, SOAP). De asemenea dispune de biblioteci care permit lucrul intr-o retea de tip TCP/IP.

robust – functiile se leaga pe durata procesului de executie, iar rezultatele dupa compilare se pot vizualiza in timp ce aplicatia ruleaza. In felul acesta se poate face diferenta intre ceea ce se doreste si ceea ce se afiseaz, pentru a nu interveni "intrusi" deghizati sub forma falselor referinte. Deoarece pointerii lipsesc cu desavarsire, nu se mai pune problema dealocarii de memorie multipla

Fig. 1.1 Arhitectura programelor Java

securitate ridicata – ori de cate ori se incarca codul, acesta este verificat cu ajutorul unui mecanism, numit mecanism CRC. Totodata, se efectueaza o verificare a operatiilor care sunt disponibile atat pentru a oferi protectie obiectelor la scriere/citire, cat si pentru robusteatea oricarui set de obiecte. Aceste verificari se realizeaza in momentul executarii aplicatiei, atunci cand se configureaza mediul de executie Java pentru a nu expune resursele calculatorului unde aplicatia ruleaza, fisierele sau reteaua unor riscuri.

multithreading – fiind un limbaj care nu depinde de platforma, java ofera posibilitatea aplicatiilor sa utilizeze mai multe fire de executie si chiar si primitive care ajuta la sincronizarea acestora

dinamic – legearea dinamica nu se face decat in momentul executiei, Java fiind un limbaj care intarzie procesul acesta. In felul acesta nu mai apar erori de alocare , fiindca de la ultima compilare, aplicatia si-a schimbat mediul. Alt aspect ar fi faptul ca variabilele se cauta dupa nume, astfel nu mai este necesar sa se realizeze o cautare prin deplasare exacta.

Java pune la dispozitie un mediu de executie care nu este altceva decat un cadru de lucru care este alcatuit dintr-o multime de nivele diferite. Nivelele acestea sunt urmatoarele: compilatorul Java, codul bytecode, colectorul automat de gunoaie pentru a elimina deseurile, biblioteca API standard, mecanism pentru verificarea bibliotecilor, mecanism pentru incarcare, masina virtuala Java pentru a putea executa bytecod-ul

Enterprise – mai multe interfețe utile care se folosesc in întreprinderi pentru a efectua aplicații de informatizare;

JDBC (Java Database Connectivity) – mai multe interfețe care permit accesul la bazele de date relaționale;

RMI – biblioteci pentru programarea distribuită;

Transaction Services – servicii effectuate in timp real pentru efectua tranzacțiilor;

Object Serialization, ODBMS – interfața prin care se realizeaza comunicarea cu Object Management System;

Media – mai multe biblioteci uilizate in publicare, multimedia si animație;

Commerce – face posibil un mediu standard unde se poate efectua comerțul electronic;

Embedded – biblioteca de clase pentru tipuri de aparatura inteligentă;

Management – bibliotecă de clase care se ocupa cu gestiunea și supravegherea rețelelor;

Security – mai multe biblioteci care permit transmiterea in siguranta a aplicațiilor în Internet;

Server – bibliotecă de clase utilizata in scrierea de aplicații de tip server.

Capitolul 2

APLICAȚII WEB

Termenul de aplicație web se referă la un sistem software, care prin intermediul unui browser web oferă o interfață de utilizator . De obicei aplicația Web se află pe un alt computer (care poarta denumirea de "server"), față de computerul pe care un utilizator îl folosește (care poarta denumirea de "client"), amândouă calculatoarele fiind conectate impreuna în rețeaua Internet.

Prin natura lor aplicațiile web sunt aplicații distribuite, ceea ce înseamnă că sunt programe care rulează pe mai mult de un calculator și comunică printr-o rețea sau server.

Modelul client/server

Internetul folosește modelul client/server în operațiile efectuate. Server-ul acționează într-un mod pasiv, așteptând ca cineva să facă o cerere. Atunci când o cerere este efectuată, server-ul o procesează, după care așteaptă mai multe cereri sau procesează cererile ulterioare. Clientul este un tip de agent utilizator pe care un utilizator îl execută pentru a avea acces la Web ( alte tipuri de agent utilizatori sunt motoarele de căutare robot sau programele de chat/messenger ). Clientul face o cerere către server și redă datele rezultate într-un mod care depinde de tipul de utilizatorul agent.

De exemplu server-ul Web primește cereri HTTP de la clienți și oferă răspunsuri către cereri. Răspunsurile trimise sunt sub forma unor pagini Web care au în componență pe lângă documente HTML și alte resurse asociate (imagini, date extrase din baze de date s.a.m.d).

La început conținutul răspunsurilor era static, adică doar fișiere HTML care erau pregătite dinainte și apoi redate, iar mai târziu conținutul răspunsurilor a devenit dinamic, adică pe lângă fragmente HTML erau introduse și date provenite din baza de date.

Figura 2.1: Arhitectura client-server

Următorii pași au loc atunci când un client face o cerere pentru o pagină Web:

Un client (PC-ul în cazul figurii de mai sus) face o cerere prin intermediul unui browser Web.

Server-ul așteaptă printr-un socket și un port sosirea cererilor HTTP. Portul 80 este portul implicit pe server în care se acceptă cererile HTTP, dar pot fi utilizate și alte porturi.

Server-ul procesează cererile în ordinea în care acestea sosesc.

Server-ul trimite apoi un răspuns( cel mai probabil în HTML).

Clientul primește răspunsul , iar vizualizarea se face în browser.

HTTP – Hypertext Transfer Protocol este un protocol de nivel de aplicație pentru sistemele informatice distribuite, fiind protocolul principal pentru paginile Web. Acest protocol este esențial pentru comunicații de date pentru World Wide Web (adică internetul) încă din anii 1990. Este un protocol fără conexiune, ceea ce înseamnă că nici o legătură permanentă nu este reținută între client și server. Fiecare document este tratat că o cerere separată într-o sesiune separată care se finalizează după ce cererea este procesată. O pagină Web poate conține o varietate de elemente cum ar fi imagini, sunete sau video. În prelucrarea unui asemenea document se realizează cereri HTTP separate pentru fiecare element (imagine, sunet sau video aflat în document). Utilizatorul (persoană care introduce URL-ul documentului) nu face în mod explicit cereri pentru elementele documentului, cu toate acestea utilizatorul agent (în cazul acesta fiind browser-ul Web) va trimite automat o cerere pentru aceste elemente astfel încât să facă posibilă vizualizarea documentului. Apoi server-ul trimite aceste elemente clientului.

URL-ul este abrevierea de la Uniform Resource Locator și este o adresă la o resursă pe Internet.Exemplu :

http://www.server.com/calea/file.html

Termenul "server" reprezintă server-ul unde se află aplicația Web, iar "calea" este calea (insiruiere de directoare) de la server spre fișierul dorit "file.html".

Un aspect important pe care îl dețin aplicațiile web este faptul că pot fi folosite foarte ușor și de către persoanele obișnuite care nu au o pregătire tehnică de specialitate în domeniul tehnologiilor web. Tocmai datorită popularității lor multe companii se bazează foarte mult pe web, atât ca și aplicații internet, cât și ca furnizare de servicii către clienți. Există numeroase exemple de aplicații web cum ar fi e-mail-ul, bloguri, cumpărături on-line, forumuri de discuții ,motoare de căutare, online banking și multe altele. O singură aplicație web poate fi accesată și utilizată de către milioane de oameni. Aplicațiile web pot fi simple sau complexe. O aplicație web simplă poate fi o pagină care afișează data și ora curentă, pe când o aplicație web complexă este compusă dintr-un set de pagini prin care puteți căuta și puteți rezerva cel mai convenabil zbor și hotel și puteți cumpăra cele mai interesante cărți de citit pentru următoarea vacanță.

2.1 Ciclul de viață al unei aplicatii Web

Componentele web sunt susținute de serviciile unei platforme de execuție numită container web. Un container web oferă următoarele servicii: cererea de expediere, securitate, concurență și managementul ciclului de viață. De asemenea, un container web oferă componentelor web acces la anumite API-uri cum ar fi: denumirea (naming), tranzacții și e-mail.

O aplicație web este formată din componente web precum: fișiere de resurse statice ( imagini, pagini HTML), clase ajutătoare și biblioteci. Containerul web oferă multe servicii de sprijin care intensifica capacitățile componentelor web și le fac mai ușor de dezvoltat. Cu toate acestea, pentru că o aplicație web trebuie să ia aceste servicii în considerare, procesul de creare și rulare a unei aplicații web este diferit față de procesul tradițional al claselor Java stand-alone .

Procesul de creare, implementarea și executarea a unei aplicații web se poate rezumă după cum urmează:

Se dezvoltă codul componentei web.

Se dezvoltă descriptorul de implementare (deployment descriptor-ul) a aplicației web, dacă este necesar.

Se compilează componentele aplicației web și clasele ajutătoare care fac referire către componente.

În mod opțional, se adaugă aplicația într-o unitate unde se poate face deploy.

Se implementează aplicația într-un container web.

Se accesează o adresa URL care face referire la aplicația web.

Anumite aspecte ale comportamentului aplicație web pot fi configurate atunci când aplicația este instalată sau implementată (= deployed), la containerul web. Informațiile de configurare pot fi specificate folosind adnotări Java EE sau pot fi menținute într-un fișier text în format XML numit descriptor de implementare al aplicației web (DD – deployment descriptor ).

2.2 Avantaje ale aplicațiilor Web

Aplicațiile Web sunt într-o continuă creștere a popularității lor datorită avantajelor pe care le oferă față de aplicațiile tradiționale. Mai jos voi prezenta beneficiile aplicațiilor Web care nu sunt așa ușor disponibile prin aplicațiile tradiționale.

Livrarea de informații

Datorită capacităților de hypertext se poate trimite conținut dinamic sub diferite formate cu ajutorul instrumentului de comunicare Web. Obiectele pot fi văzute online, dar se pot și descărca și vizualiza în funcție de preferințele clientului.

Acces la distanță

Aplicațiile devin independente de locația fizică, ceea ce presupune că pot fi accesate de la distanță fără nici o problema, atâta timp cât există acces la internet.

Upgrade instant

Modificările ce se fac pe partea de server asupra aplicațiilor web au un efect imediat pentru toți clienții, fără a avea probleme de incompatibilitate din cauza diferențelor de versiune.

Platforma independentă

Cele mai comune și mai utilizate browsere sunt disponibile pe o varietate de platforme, astfel că aplicațiile web au devenit independente de platforme în ceea ce privește contextul rulării aplicației.

Eforturi de dezvoltare si costuri reduse

Eforturile de dezvoltare și costurile aplicației sunt reduse semnificativ, deoarece se pune mai mult accent pe logica de afaceri și pe iterfata utilizator, decât pe partea de rețea de programare.

Eforturile întreținerii centralizate

Întreținerea centralizată a aplicațiilor Web este un beneficiu foarte important, unul cheie am putea spune. De foarte multe ori costurile de coordonare a întreținerii aplicațiilor distribuite și costurile de distribuție pentru upgrade-uri de întreținere pot reduce.

Schimbări ale interfeței

Interfața utilizatorului poate fi modificată fără a afecta restul aplicației. De asemenea, interfața utilizator în aplicațiile bazate pe web este mai ușor de personalizat. Acest aspect face să fie mai ușoară actualizarea aspectului aplicației sau prezentarea unor informații diferențiate către diferite grupuri de utilizatori.

2.3 Problemele specifice aplicațiilor web

Cu toate că aplicațiile Web oferă numeroase beneficii, dezvoltatorii au întâmpinat probleme dificile cărora au trebuit să le facă față în aplicațiile web. Problemele principale sunt manipularea sincronizării, menținerea statutului sau a sesiunii de informare, clienți care folosesc versiuni vechi de browser și probleme de programare pe diferite platforme.

Manipularea sincronizării

În arhitectura client-server, fiecare server se ocupă cu mai mulți clienți. Pe lângă acest aspect, fiecare server accesează servicii comune în aplicație. Astfel de servicii pot include fișiere, baze de date și servicii de e-mail. Este important pentru clienți să nu se suprapună . De exemplu, clienții se suprapun atunci când un client citește date dintr-un fișier, în timp ce un alt client scrie în fișierul respectiv. Aplicațiile Web trebuie dezvoltate pentru a gestiona aceste tipuri de situații.

Menținerea statutului

Având în vedere că Web-ul (în contextul HTTP) este fără statut, determinarea statutului clientului devine o provocare. Cum ști unde se află clientul în aplicație și ce pagină are pornită? Cele mai bune limbaje de scipting definesc obiectul de sesiune într-un anumit fel. Sunt mai multe modalități de a menține sesiunile și statutul informației. Principalele metode sunt Cookie-urile, câmpuri de formular ascunse și rescrierea URL-ului.

Platforme multiple

Deoarece aplicațiile Web pot fi accesate pe mai multe browsere și platforme, evitarea codului care funcționează doar pe un anumit tip de browser sau platforma este o idee bună. Astfel de coduri cauzează probleme pentru clienții care utilizează aplicațiile Web.

2.4 Arhitectura aplicațiilor web

Aplicațiile Web sunt aplicații complexe, tocmai din acest motiv ele pot prezenta o structură arhitecturală proprie. Termenul de arhitectură provine din construcții și înseamnă felul în care este construit sau alcătuit ceva (din mai multe părți obținem un întreg). Modul cel mai bun în care alegem să asociem părțile într-un întreg reprezintă alegerea unei arhitecturi corecte. Prin alegerea unei arhitecturi corecte rezultă efecte pozitive atât pe parcursul dezvoltării aplicației (productivitatea crește), cât și după ce aplicația este livrată către client (posibilitatea unei întretineri facile).

Dar atât arhitectura, cât și cerințele software se află într-o transformare permanentă, lucru datorat faptului că nu au fost specificate clar cerințele încă de la începutul procesului de dezvoltare sau pentru că ,deși, sistemul este finalizat se doresc schimbate cerințele.

Figura 2.2: Factori care influenteaza dezvoltarea unei arhitecturi

Atât cerințele funcționale cât și considerațiile în ceea ce privește calitatea influențează în mod principal arhitectura unei aplicații. În ciuda acestor cerințe, chiar și constrângerile tehnice influențează arhitecturile. Prin constrângeri tehnice mă refer la sistemele de moștenire care vor fi integrate, sistemul software utilizat, standardele utilizate, middleware, aspectele de distribuire sau regulile de dezvoltare. Din cauza faptului că sistemele software se află într-o schimbare continuă, arhitecturile sunt în general dezvoltate într-un mod iterativ, iar acest lucru nu asigura o arhitectură solidă.

Similar Posts

  • Controlul Gestiunii Datoriei Publice

    UNIVERSITATEA NICOLAE TITULESCU FACULTATEA DE ȘTIINȚE SOCIALE ȘI ADMINISTRATIVE PROGRAMUL DE STUDII: ADMINISTRAȚIE PUBLICĂ LUCRARE DE LICENȚĂ Coordonator ștințific: Prof. univ. dr. Popeangă Petre Student : Stoica Ana-Maria București 2016 UNIVERSITATEA NICOLAE TITULESCU FACULTATEA DE ȘTIINȚE SOCIALE ȘI ADMINISTRATIVE PROGRAMUL DE STUDII: ADMINISTRAȚIE PUBLICĂ LUCRARE DE LICENȚĂ DISCIPLINA: AUDIT FINANCIAR ṢI FINANṬE PUBLICE TEMA: CONTROLUL…

  • Receptarea Textului Liric Bacovian In Liceu

    === dfbbea9a0ade9ff8216243c6e2c46ed02ecd3bf8_421711_1 === Ϲuрrinѕ Intrоduсеrе ϹАΡIΤОLUL I RΕΡΕRΕ ΤΕОRΕΤIϹΕ IΝΤRОDUϹΤIVΕ 1.1 Ѕреϲii ɑlе gеnului liriϲ 1.2 Ροеziɑ – mοd dе ехiѕtеnță 1.3 Ѕсurt iѕtоriс ɑl еvоluțiеi роеziеi rоmânеști 1.4 Μоmеntul Gеоrgе Вɑсоviɑ. Divеrѕitɑtе tеmɑtiϲă, ѕtiliѕtiϲă și dе viziunе în рοеziɑ intеrbеliϲă: trɑdițiοnɑliѕm vѕ mοdеrniѕm, ехреrimеnt și ɑvɑngɑrdă САΡITОLUL II UΝIVЕRЅUL LIRIС ВАСОVIАΝ 2.1 Dеzɑgrеgɑrеɑ 2.2…

  • Distinctia Dintre Persuasiune Si Manipulare

    === c6bf2455914d51a61c2faf49d0424b5b7e670b21_380044_1 === Реrsuasіunе șі manірularе în рublіϲіtatе Ϲaріtolul 1: Рublіϲіtatеa – întrе реrsuasіunе șі manірularе 1.1 Рublіϲіtatеa – dіfеrеnța sреϲіfіϲă a aϲеstеіa 1.2 Реrsuasіunеa – dеfіnіțіе, ϲaraϲtеrіstіϲі 1.3. Manірularеa – dеfіnіțіе, ϲaraϲtеrіstіϲі 1.4 Τеhnіϲі dе manірularе în рublіϲіtatе Ϲaріtolul 2 Studіu еmріrіϲ: Mϲ Donalds Ϲaріtolul 3 – Tehnici de manipulare la Mc Donalds Ϲonϲluzіі…

  • Aplicarea Conceptului de Interventie

    CUPRINS PLAN DE IDEI 00. INTRODUCERE ARGUMENT STRATEGIE 01. CRESTEREA COMPETITIVITATII ECONOMICE PRIN CERCETARE CUVINTE CHEIE SI TERMINOLOGIE SPECIFICA CERCETAREA STIINTIFICA COMPETITIVITATE ECONOMICA INTERVENTIE (IN SIT ISTORIC ANSAMBLURI ARHITECTURALE AMBIANTA/CONFORT AMBIENTAL MONUMENTE ZONE ISTORICE SI ARHITECTURALE EXEMPLE DE INTERVENTII SI PROGRAME LA NIVEL EUROPEAN WCEC. BRITISH MUSEUM (2011, Marea Britanie HISTORY MUSEUM. DARWIN CENTER (2009,…

  • Clusterul Inovativ

    INTRODUCERE Într-o societate aflată în continuă evoluție și cu tendințe tot mai evidente de globalizare, întreprinderile mici sau mijlocii sunt puse în dificultate de companiile naționale mari care dețin majoritatea exportului și puterii de producție. În competiția globală pentru piețe, șansele succesului economic al unei țări sau al unei regiuni se bazează pe specializarea ofertei…

  • Institutia Contenciosului Administrativ

    C U P R I N S Cuprins…………………………………………………………………………………………………….1 Capitolul I Consideratii generale privind Instituția contenciosului administrativ…………………2 Capitolul II Plangerea prealabila, ca institutie a contenciosului administrativ ……………….4 2.1.Natura juridica a plangerii prealabile………………………………………………..4 Capitolul III Conditii de fond si forma pentru introducerea plangerii prealabile………………5 3.1.Termenul de introducere a plangerii prealabile……………………………………7 3.2.Identificarea persoanei vatamate……………………………………………………….10 3.3 Cazurile in care…