Differences
This shows you the differences between two versions of the page.
| 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]] |
