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:laborator04 [2015/11/13 05:04]
Andrei Roșu-Cojocaru
laboratoare:laborator04 [2015/11/20 03:05] (current)
Andrei Roșu-Cojocaru
Line 218: Line 218:
 În pachetul ''​javax.servlet'',​ filtrele sunt definite prin interfeţele [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​Filter.html|Filter]],​ [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​FilterChain.html|FilterChain]] şi [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​FilterConfig.html|FilterConfig]]. În pachetul ''​javax.servlet'',​ filtrele sunt definite prin interfeţele [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​Filter.html|Filter]],​ [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​FilterChain.html|FilterChain]] şi [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​FilterConfig.html|FilterConfig]].
  
-Un filtru implementează interfaţa ''​javax.servlet.Filter''​ şi este adnotat cu însemnarea [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html|@WebFilter]] care trebuie să specifice cel puţin un URL (folosind atributele [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html#​urlPatterns--|urlPatterns]] sau [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html#​value--|value''​]]. Informaţiile cu privire la configurarea unui filtru sunt precizate prin atributul [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html#​initParams--|initParams]] al aceleiaşi adnotări. Metoda cea mai importantă a unui filtru este [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​Filter.html#​doFilter-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-|doFilter()]] care primeşte cererea, răspunsul şi lanţul de filtre, în afară de ea trebuind implementate metodele ''​init()''​ şi ''​destroy()''​. Metoda ''​doFilter()''​ poate analiza antetele cererii şi răspunsului (doar după invocarea următorului filtru din lanţul de filtre), poate particulariza obiectele cerere şi răspuns în sensul modificării antetelor sau conţinutului,​ poate invoca următorul filtru din lanţul de filtre (prin apelarea metodei ''​doFilter()''​ a acestuia şi transmiterea cererii şi răspunsului primite sau prelucrate de el), respectiv blocarea comunicaţiei,​ generarea unei excepţii pentru a indica producerea unei erori în cadrul procesării.+Un filtru implementează interfaţa ''​javax.servlet.Filter''​ şi este adnotat cu însemnarea [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html|@WebFilter]] care trebuie să specifice cel puţin un URL (folosind atributele [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html#​urlPatterns--|urlPatterns]] sau [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html#​value--|value]]. Informaţiile cu privire la configurarea unui filtru sunt precizate prin atributul [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​annotation/​WebFilter.html#​initParams--|initParams]] al aceleiaşi adnotări. Metoda cea mai importantă a unui filtru este [[https://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​Filter.html#​doFilter-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-|doFilter()]] care primeşte cererea, răspunsul şi lanţul de filtre, în afară de ea trebuind implementate metodele ''​init()''​ şi ''​destroy()''​. Metoda ''​doFilter()''​ poate analiza antetele cererii şi răspunsului (doar după invocarea următorului filtru din lanţul de filtre), poate particulariza obiectele cerere şi răspuns în sensul modificării antetelor sau conţinutului,​ poate invoca următorul filtru din lanţul de filtre (prin apelarea metodei ''​doFilter()''​ a acestuia şi transmiterea cererii şi răspunsului primite sau prelucrate de el), respectiv blocarea comunicaţiei,​ generarea unei excepţii pentru a indica producerea unei erori în cadrul procesării.
  
 Un filtru poate adăuga un atribut la cerere sau poate introduce informaţii în contextul unui răspuns. Pentru a suprascrie metodele cererii, obiectul de tip cerere va fi împachetat într-un obiect derivat din [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​ServletRequestWrapper.html|ServletRequestWrapper]] sau [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​http/​HttpServletRequestWrapper.html|HttpServletRequestWrapper]]. Similar, pentru răspuns va fi folosit [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​ServletResponseWrapper.html|ServletResponseWrapper]] sau [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​http/​HttpServletResponseWrapper.html|HttpServletResponseWrapper]]. Un filtru poate adăuga un atribut la cerere sau poate introduce informaţii în contextul unui răspuns. Pentru a suprascrie metodele cererii, obiectul de tip cerere va fi împachetat într-un obiect derivat din [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​ServletRequestWrapper.html|ServletRequestWrapper]] sau [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​http/​HttpServletRequestWrapper.html|HttpServletRequestWrapper]]. Similar, pentru răspuns va fi folosit [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​ServletResponseWrapper.html|ServletResponseWrapper]] sau [[http://​docs.oracle.com/​javaee/​7/​api/​javax/​servlet/​http/​HttpServletResponseWrapper.html|HttpServletResponseWrapper]].
Line 521: Line 521:
 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 608: Line 608:
 </​spoiler>​ </​spoiler>​
  
-**11.** În pachetul ''​ro.pub.cs.aipi.lab07.servlets'',​ în clasa ''​ClientServlet'',​ metoda ''​doPost()'',​ să se implementeze operaţiile de anulare, respectiv finalizare a unei comenzi.+**11.** În pachetul ''​ro.pub.cs.aipi.lab04.servlets'',​ în clasa ''​ClientServlet'',​ metoda ''​doPost()'',​ să se implementeze operaţiile de anulare, respectiv finalizare a unei comenzi.
  
 <​spoiler|Indicații de Rezolvare>​ <​spoiler|Indicații de Rezolvare>​
Line 674: Line 674:
  
 ===== Soluții ===== ===== Soluții =====
- +[[https://​github.com/​aipi2015/​Laborator04/​tree/​master/​solutions/​eclipse/​04-BookStore-JavaServlets|Proiect Eclipse]]\\ ​ 
-TODO+[[https://​github.com/​aipi2015/​Laborator04/​tree/​master/​solutions/​netbeans/​04-BookStore-JavaServlets|Proiect NetBeans]]
laboratoare/laborator04.1447383868.txt.gz · Last modified: 2015/11/13 05:04 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