Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:laborator05 [2015/11/20 01:11] Andrei Roșu-Cojocaru |
laboratoare:laborator05 [2015/11/25 20:00] (current) Andrei Roșu-Cojocaru |
||
|---|---|---|---|
| Line 1280: | Line 1280: | ||
| * un utilizator tip **client**, care va formula o comandă după ce şi-a specificat un anumit coş de cumpărături ca urmare a consultării catalogului de produse; pe baza comenzii va fi emisă o factură (''invoice_header''), caracterizată printr-un număr de identificare (''identification_number''), data la care a fost emisă (''issue_date''), stare (''state'') și identificatorul utilizatorului către care va fi transmisă (''user_id''); aceasta conține la rândul ei mai multe înregistrări, corespunzătoare cărților care au fost cumpărate (''invoice_line''), definite de factura corespunzătoare (''invoice_header_id''), identificatorul formatului de prezentare al cărții (''book_presentation_id'') și cantitatea (''quantity''). | * un utilizator tip **client**, care va formula o comandă după ce şi-a specificat un anumit coş de cumpărături ca urmare a consultării catalogului de produse; pe baza comenzii va fi emisă o factură (''invoice_header''), caracterizată printr-un număr de identificare (''identification_number''), data la care a fost emisă (''issue_date''), stare (''state'') și identificatorul utilizatorului către care va fi transmisă (''user_id''); aceasta conține la rândul ei mai multe înregistrări, corespunzătoare cărților care au fost cumpărate (''invoice_line''), definite de factura corespunzătoare (''invoice_header_id''), identificatorul formatului de prezentare al cărții (''book_presentation_id'') și cantitatea (''quantity''). | ||
| - | Pentru fiecare funcționalitate există o pagină dedicată, gestionată de câte o clasă Java Servlet: pagina de autentificare (''LoginServlet'') de unde, în funcţie de rolul utilizatorului se trece la pagina de tip administrator (''AdministratorServlet'') respectiv pagina de tip client (''ClientServlet''). | + | Pentru fiecare funcționalitate există o pagină dedicată, gestionată de câte o clasă Java Servlet și de o pagină .jsp: pagina de autentificare (''LoginServlet'' / ''login.jsp'') de unde, în funcţie de rolul utilizatorului se trece la pagina de tip administrator (''AdministratorServlet'' / ''administrator.jsp'') respectiv pagina de tip client (''ClientServlet'' / ''client.jsp''). Pentru fiecare pagină, cererea primită din navigator este preluată de clasa servlet corespunzătoare, unde sunt realizate procesările ce țin de logica aplicației, inclusiv accesarea informațiilor din baza de date. Prezentarea informațiilor astfel obținute este delegată către pagina .jsp, către care se transferă contextul. Datele care se doresc a fi vizualizate sunt transmise dinspre servlet către pagina JSP sub formă de atribute. În acest mod se construiește răspunsul care va fi trimis către navigator. |
| - | {{ :laboratoare:laborator04:bookstore_webapplication_structure.png?nolink&300 }} | + | {{ :laboratoare:laborator05:bookstore_webapplication_structure.png?nolink&300 }} |
| <html> | <html> | ||
| Line 1291: | Line 1291: | ||
| </center> | </center> | ||
| </html> | </html> | ||
| + | |||
| + | Atributele care sunt transmise între clasele servlet și paginile .jsp sunt: | ||
| + | - LoginServlet → login.jsp | ||
| + | * ''Constants.ERROR_ATTRIBUTE'' - furnizează informații cu privire la rezultatul operației de autentificare a unui utilizator în cadrul aplicației web (succes, eșec); | ||
| + | - AdministratorServlet → administrator.jsp | ||
| + | * ''Constants.DISPLAY'' - identificatorul utilizatorului autentificat în cadrul aplicației web (format din prenume și nume); | ||
| + | * ''Constants.DATABASE_STRUCTURE'' - structura bazei de date, formată din lista tuturor tabelelor; | ||
| + | * ''Constants.CURRENT_TABLE'' - denumirea tabelei vizualizată la un moment dat de timp; | ||
| + | * ''Constants.ATTRIBUTES'' - structura tabelei vizualizată la un moment dat de timp, conținând lista tuturor atributelor; | ||
| + | * ''Constants.IDENTIFIER'' - denumirea identificatorului în lista de atribute; | ||
| + | * ''Constants.IDENTIFIER_INDEX'' - poziția identificatorului în lista de atribute; | ||
| + | * ''Constants.IDENTIFIER_NEXT_VALUE'' - valoarea identificatorului unei înregistrări pentru adăugare; | ||
| + | * ''Constants.TABLE_CONTENT'' - conținutul tabelei vizualizate la un moment dat de timp, conținând lista tuturor înregistrărilor, pentru fiecare înregistrare fiind reținute valorile tuturor atributelor; | ||
| + | * ''Constants.IDENTIFIER_VALUE_OF_RECORD_TO_BE_UPDATED'' - valoarea identificatorului unei înregistrări selectate pentru modificare sau ștergere, în situația în care aceasta a fost selectată; | ||
| + | - ClientServlet → client.jsp | ||
| + | * ''Constants.DISPLAY'' - identificatorul utilizatorului autentificat în cadrul aplicației web (format din prenume și nume); | ||
| + | * ''Constants.BOOKS'' - lista cărților care vor fi vizualizate, împreună cu toate atributele, în funcție de criteriile de filtrare care au fost precizate; | ||
| + | * ''Constants.ERROR_MESSAGE'' - mesaj de eroare legat de procesarea coșului de cumpărături; | ||
| + | * ''Constants.SHOPPING_CART'' - conținutul coșului de cumpărături (identificatorul formatului de prezentare și cantitatea solicitată); | ||
| + | * ''Constants.FORMATS_FILTER'' - lista cu criteriile de sortare în funcție de formatul de prezentare; | ||
| + | * ''Constants.LANGUAGES_FILTER'' - lista cu criteriile de sortare în funcție de limbă; | ||
| + | * ''Constants.CATEGORIES_FILTER'' - lista cu criteriile de sortare în funcție de categorie; | ||
| + | * ''Constants.CURRENT_RECORDS_PER_PAGE'' - numărul maxim de înregistrări care poate fi vizualizat pe o pagină la un moment dat; | ||
| + | * ''Constants.CURRENT_PAGE'' - pagina vizualizată la un moment dat; | ||
| + | * ''Constants.FILTER_CHANGE'' - indică dacă informațiile au fost reîncărcate din baza de date datorită modificării criteriilor de filtrare; | ||
| + | * ''Constants.FORMATS_LIST'' - lista cu toate formatele de prezentare disponibile; | ||
| + | * ''Constants.LANGUAGES_LIST'' - lista cu toate limbile disponibile; | ||
| + | * ''Constants.CATEGORIES_LIST'' - lista cu toate categoriile disponibile. | ||
| {{ :laboratoare:laborator04:bookstore_webapplication_loginservlet.png?nolink&300 }} | {{ :laboratoare:laborator04:bookstore_webapplication_loginservlet.png?nolink&300 }} | ||
| Line 1347: | Line 1375: | ||
| ==== Eclipse ==== | ==== Eclipse ==== | ||
| - | Să se creeze o referinţă către serverul HTTP Apache Tomcat care să fie adăugată la proiectul 05-BookStore-JSP. | + | Să se creeze o referinţă către serverul HTTP Apache Tomcat care să fie adăugată la proiectul 04-BookStore-JavaServlets. |
| Să se deschidă proiectul folosind opţiunea //File// → //Import// → //General// → //Existing Project into Workspace..//. | Să se deschidă proiectul folosind opţiunea //File// → //Import// → //General// → //Existing Project into Workspace..//. | ||
| - | Se accesează opţiunea //Run as...// → //Run On Server// din meniul contextual al aplicaţiei 05-BookStore-JSP (right-click), bifându-se opţiunea //Always use this server when running this project//. | + | Se accesează opţiunea //Run as...// → //Run On Server// din meniul contextual al aplicaţiei 04-BookStore-JavaServlets (right-click), bifându-se opţiunea //Always use this server when running this project//. |
| {{ :laboratoare:laborator04:eclipse01.png?nolink }} | {{ :laboratoare:laborator04:eclipse01.png?nolink }} | ||
| Line 1357: | Line 1385: | ||
| {{ :laboratoare:laborator04:eclipse02.png?nolink }} | {{ :laboratoare:laborator04:eclipse02.png?nolink }} | ||
| - | {{ :laboratoare:laborator04:eclipse03.png?nolink }} | + | {{ :laboratoare:laborator05:eclipse03.png?nolink }} |
| ==== NetBeans ==== | ==== NetBeans ==== | ||
| Line 1365: | Line 1393: | ||
| Se accesează opţiunea //Deploy// din meniul contextual al proiectului (accesat cu right-click). | Se accesează opţiunea //Deploy// din meniul contextual al proiectului (accesat cu right-click). | ||
| - | {{ :laboratoare:laborator04:netbeans.png?nolink }} | + | {{ :laboratoare:laborator04:netbeans01.png?nolink }} |
| Alternativ, se poate porni serverul Apache Tomcat și dezvolta aplicația web în contextul său și prin opțiunea //Run// (F6), care va lansa și browser-ul implicit în care va fi prezentată pagina principală a aplicației web. | Alternativ, se poate porni serverul Apache Tomcat și dezvolta aplicația web în contextul său și prin opțiunea //Run// (F6), care va lansa și browser-ul implicit în care va fi prezentată pagina principală a aplicației web. | ||
| Line 1377: | Line 1405: | ||
| org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false | org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false | ||
| </file> | </file> | ||
| + | |||
| + | ==== Eclipse ==== | ||
| + | |||
| + | Fișierul ''catalina.properties'' poate fi editat din mediul integrat de dezvoltare, în cazul în care sunt preluate informațiile din configurația de rulare specifică spațiului de lucru curent. În acest sens, în secțiunea //Properties// asociată serverului Apache Tomcat 8.x (accesibilă prin intermediul meniului contextual, din panoul //Servers//), atributul //Location// trebuie să refere metadatele din cadrul spațiului de lucru curent (având valoarea //[workspace metadata]//). În situația în care este precizată o altă valoare, se accesează butonul //Switch Location//. | ||
| + | |||
| + | {{ :laboratoare:laborator04:eclipse04.png?nolink }} | ||
| + | |||
| + | În panoul //Project Explorer//, în secțiunea //Servers//, se editează fișierul ''catalina.properties'' corespunzător configurației de server Apache Tomcat 8.x pe care este rulată aplicația web. | ||
| + | |||
| + | {{ :laboratoare:laborator04:eclipse05.png?nolink }} | ||
| + | |||
| + | ==== NetBeans ==== | ||
| + | |||
| + | Fișierul ''catalina.properties'' va fi editat manual, după ce se identifică locația la care este instalată instanța serverului Apache Tomcat 8.x pe care este rulată aplicația web. Aceasta poate fi determinată din secțiunea //Servers// corespunzătoare, în panoul //Connection//, fiind referită prin atributul //Catalina Base//. | ||
| + | |||
| + | {{ :laboratoare:laborator04:netbeans02.png?nolink }} | ||
| + | |||
| + | ===== ===== | ||
| **5.** Să se testeze aplicaţia prin accesarea adresei [[http://localhost:8080/05-BookStore-JSP/|]]. | **5.** Să se testeze aplicaţia prin accesarea adresei [[http://localhost:8080/05-BookStore-JSP/|]]. | ||
| Line 1570: | Line 1616: | ||
| ===== Soluții ===== | ===== Soluții ===== | ||
| - | TODO | + | [[https://github.com/aipi2015/Laborator05/tree/master/solutions/eclipse/05-BookStore-JSP|Proiect Eclipse]]\\ |
| + | [[https://github.com/aipi2015/Laborator05/tree/master/solutions/netbeans/05-BookStore-JSP|Proiect NetBeans]] | ||
