servlets - Filters not working properly -


i made 2 filters auction web application. implemented 2 filters, first performs simple logging operations, , second, check if user authorized access particular resource.

the troubles these filters work correctly first time connect website. infact displays name of the user in toolbar, , happens if logged in correctly. afterwards, log out , repeat process, second filter not work @ all.

i put println statements check if filters executed, isn't case. first filter works constantly. strange part arises when change xml mapping. infact, when take mapping out both filters, first filter continues working! went nuts day yesterday trying understand this.

weirder yet, if rewrite xml mapping filters, work both first log in process, then, once log out , repeat operation, log in filter doesnt work anymore. make web application java7, netbeans 7.2 , tomcat 7. fear may bug netbeans idea, not sure.

the xml mapping following:

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <filter>     <filter-name>filtrologgingfumettopoli</filter-name>     <filter-class>filtri.filtrologgingfumettopoli</filter-class> </filter> <filter-mapping>     <filter-name>filtrologgingfumettopoli</filter-name>     <url-pattern>/*</url-pattern>     <dispatcher>forward</dispatcher> </filter-mapping> <filter>     <filter-name>filtrologin</filter-name>     <filter-class>filtri.filtrologin</filter-class> </filter> <filter-mapping>     <filter-name>filtrologin</filter-name>     <url-pattern>/registrato/*</url-pattern>     <servlet-name>ilmioconto</servlet-name>     <servlet-name>vendi</servlet-name>     <dispatcher>request</dispatcher> </filter-mapping>** 

here first filter logging in log fil:

private void dobeforeprocessing(servletrequest request, servletresponse response)         throws ioexception, servletexception {     if (debug) {         log("filtrologgingfumettopoli:dobeforeprocessing");     }       httpservletrequest httprequest = (httpservletrequest) request;     httpservletresponse httpresponse = (httpservletresponse) response;       this.log(httprequest.getremotehost()+" trying access page: "+httprequest.getrequesturl()+                 " il "+timeutility.ottienidataora()+". "+filterconfig.getfiltername());     system.out.println("filtro file di log----> logging occured in log file: "             +httprequest.getrequesturl()+" il "+timeutility.ottienidataora()+". "+filterconfig.getfiltername()); }      private void doafterprocessing(servletrequest request, servletresponse response)         throws ioexception, servletexception {     if (debug) {         log("filtrologgingfumettopoli:doafterprocessing");     } }   public void dofilter(servletrequest request, servletresponse response,         filterchain chain)         throws ioexception, servletexception {      dobeforeprocessing(request, response);      throwable problem = null;     try {         chain.dofilter(request, response);     } catch (throwable t) {          problem = t;         t.printstacktrace();     }      doafterprocessing(request, response);       if (problem != null) {         if (problem instanceof servletexception) {             throw (servletexception) problem;         }         if (problem instanceof ioexception) {             throw (ioexception) problem;         }         sendprocessingerror(problem, response);     } } 

here filter checks if authorized user wants access resources contained in registrato folder, , few servlets:

public class filtrologin implements filter {     private filterconfig filterconfig = null;  public void init(filterconfig filterconfig) {     this.filterconfig = filterconfig; }  public void dofilter(servletrequest request,servletresponse response,       filterchain chain) throws ioexception, servletexception {      httpservletrequest httprequest = (httpservletrequest) request;     httpservletresponse httpresponse = (httpservletresponse) response;     httpsession sessione = httprequest.getsession();      servletcontext sc = filterconfig.getservletcontext();      string filtername = filterconfig.getfiltername();     string servletpath = "servlet path: " + httprequest.getservletpath();      string url ="";      utente user = null;     user = (utente) sessione.getattribute("utente");     if(user == null){          cookie[] cookies =httprequest.getcookies();         string email = cookieutility.ottienivalorecookie(cookies, "usercookie");         if(email.equalsignorecase("")){                            system.out.println("filtro login----->nessun cookie trovato!");             system.out.println("filtro login----->servlet context: "+sc.getcontextpath());               url ="/mostrainserzioni";             httpresponse.sendredirect(sc.getcontextpath()+url);             return;         }         else{             system.out.println("filtro login----->cookie trovato: "+email);              user = utentesql.cercautente(email);             system.out.println("filtro login----->utente trovato: "+user.getusername());             sessione.setattribute("utente", user);                  string salutoutente = "benvenuto "+user.getnome();             sessione.setattribute("messaggio", salutoutente);          }     }     else         system.out.println("filtro login----->user found: "+user.getusername());        sc.log(httprequest.getremotehost()+" cerca di accedere alla risorsa: "+httprequest.getrequesturl()+                 " il "+timeutility.ottienidataora()+". "+filterconfig.getfiltername());     system.out.println("filtro file di log----> logging occured in log file: "             +httprequest.getrequesturl()+" il "+timeutility.ottienidataora()+". "+filterconfig.getfiltername());     chain.dofilter(request, response);  }  public void destroy() {      filterconfig = null; } } 

simply user = sessione == null ? null : (utente) sessione.getattribute("utente"); , after else { just: sessione = httprequest.getsession(true); prevents holding sessions non-users. – joop eggen yesterday

httpsession sessione = httprequest.getsession(false); if (sessione == null) {     system.out.println("filtro login----->user not found in session!"); 

– salvatore servodio 44 mins ago

then checked cookies. if find cookie need create new session , put user info in session , otherwise redirect login page


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -