Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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]]
laboratoare/laborator05.1447974716.txt.gz · Last modified: 2015/11/20 01:11 by Andrei Roșu-Cojocaru
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0