You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by fr...@pacbell.net on 2006/01/18 05:44:17 UTC

RE: Servlet Filter?

 

-----Original Message-----
From: Bjørn T Johansen [mailto:btj@havleik.no] 
Sent: Thursday, May 05, 2005 8:50 AM
To: MyFaces Discussion
Subject: Re: Servlet Filter?

Yes, you are correct... And after changing my url-pattern back to
/protected/* it works like it should.... And what you say about the url,
makes sense....

So thx! :)

BTJ

Matt Blum wrote:
> You need to change your url-mapping back to "/protected/*".  I'm 
> assuming you left it mapped to "/*", in which case the behavior you're 
> describing is what you *should* be seeing.  The filter is being called 
> twice now, once for the initial request (logins.jsp) and once for the 
> forward (/protected/index.jsp).  The URL you're printing out is coming 
> from the request object, which will only give you the URL that was 
> originally sent to the server.
> 
> That's the difference between a redirect and a forward: a redirect 
> instructs the client to request a different URL from the server, which 
> thereby creates a new request object; a forward is handled entirely on 
> the server, with the server simply redirecting the *handling* of the 
> request to something other than what was initially requested.
> 
> -Matt
> 
> On 5/5/05, *Bjørn T Johansen* <btj@havleik.no <ma...@havleik.no>>
> wrote:
> 
>     Well, I tried switching to 2.4 spec, but the only difference (I
>     enabled requests and
>     forwards), is that it now prints the url twice (i.e. the doFilter
>     method is called twice),
>     but it still just shows me the url for the previous page ( i.e.
>     /logins.jsp instead of
>     /protected/index.jsp but the page shown is /protected/index.jsp)
>     Is there something fundamental I am missing...? This is my first JSF
>     app, but it shouldn't
>     be that much different from say Struts...
> 
>     BTJ
> 
>     Matt Blum wrote:
>     > OK, now I think I've got it:
>     >
>     > The navigation rule is doing a forward, not a redirect.  Servlet
>     filters
>     > don't always handle anything but the initial server request.  If
>     you're
>     > using a servlet container that only supports up to servlet spec
>     2.3, it
>     > will *only* handle the initial server request, so I'm not sure how
>     you'd
>     > fix your problem.  If you're using one that supports servlet spec
2.4,
>     > though, you can configure it to handle requests, forwards,
>     includes, and
>     > errors as follows:
>     >
>     > <filter-mapping>
>     >     <filter-name>MyFilter</filter-name>
>     >     <url-pattern</pattern/*</url-pattern>
>     >     <dispatcher>REQUEST</dispatcher>
>     >
>     >     <dispatcher>FORWARD</dispatcher>
>     >     <dispatcher>INCLUDE</dispatcher>
>     >     <dispatcher>ERROR</dispatcher>
>     > </filter-mapping>
>     >
>     >
>     > Obviously, if you only want it to handle requests and forwards,
>     you only
>     > need the corresponding lines.
>     >
>     > Hope this helps.
>     > -Matt
>     >
>     > On 5/4/05, *Bjørn T Johansen* <btj@havleik.no
>     <ma...@havleik.no> <mailto:btj@havleik.no
<ma...@havleik.no>>>
>     > wrote:
>     >
>     >     Well, I changed my pattern to /* and something strange happens
in
>     >     the doFilter method...
>     >
>     >     I am coming from /login.jsp and the navigation rule looks like
>     this..:
>     >
>     >     <navigation-rule>
>     >       <from-view-id>/login.jsp</from-view-id>
>     >       <navigation-case>
>     >        <from-outcome>success</from-outcome>
>     >        <to-view-id>/protected/index.jsp</to-view-id>
>     >       </navigation-case>
>     >     </navigation-rule>
>     >
>     >     And when the outcome is success from /login.jsp, the correct
>     page is
>     >     showing
>     >     (/protected/index.jsp) but putting this call in the doFilter
>     method:
>     >
>     >     writeLog(((HttpServletRequest)request).getRequestURL());
>     >
>     >     gives me the url to the previous page, /logins.jsf.. Shouldn't
>     this be
>     >     /protected/index.jsf ?? But this explains why the patterng
>     >     /protected/* didn't work, but
>     >     why is this the request url in doFilter??
>     >
>     >     BTJ
>     >
>     >     Matt Blum wrote:
>     >     > The only possibilities I can think of that would cause the
>     >     behavior you
>     >     > describe are:
>     >     >
>     >     > 1. The URL is being redirected before the filter is hit, so
the
>     >     > url-mapping doesn't apply (you can test this by setting the
>     >     pattern back
>     >     > to /* and outputting the path the filter finds).
>     >     >
>     >     > 2. Another filter whose pattern is matched by the request
>     (and which
>     >     > comes before the filter you're working on in your web.xml
>     list of
>     >     > filter-mappings) is failing to call doFilter(request,
>     response) on the
>     >     > FilterChain object it receives, for some reason.
>     >     >
>     >     > -Matt
>     >     >
>     >     > On 5/4/05, *Bjørn T Johansen* <btj@havleik.no
>     <ma...@havleik.no>
>     >     <mailto:btj@havleik.no <ma...@havleik.no>>
>     <mailto:btj@havleik.no <ma...@havleik.no>
>     <mailto:btj@havleik.no <ma...@havleik.no>>>>
>     >     > wrote:
>     >     >
>     >     >     Yes, I do... But I have tried /faces/protected/* too,
>     with no
>     >     luck....
>     >     >
>     >     >     BTJ
>     >     >
>     >     >     Jonathan Eric Miller wrote:
>     >     >     > This is just a guess, but, if you have JSF configured
>     to use
>     >     >     mappings like,
>     >     >     >
>     >     >     > /faces/*
>     >     >     >
>     >     >     > then, I think it might change the path to something like
>     >     >     > /faces/protected/<page>.jsp (so, I think you could
>     setup a
>     >     mapping of
>     >     >     > /faces/protected/* instead of /protected/*).
>     >     >     >
>     >     >     > I used to have mine setup like that, but, now I'm using
a,
>     >     >     >
>     >     >     > *.faces
>     >     >     >
>     >     >     > mapping for faces. This way it doesn't mess around
>     with the
>     >     path.
>     >     >     >
>     >     >     > Jon
>     >     >     >
>     >     >     > ----- Original Message ----- From: "Bjørn T Johansen" <
>     >     >     btj@havleik.no <ma...@havleik.no>
>     <mailto:btj@havleik.no <ma...@havleik.no>> <mailto:
>     btj@havleik.no <ma...@havleik.no>
>     >     <mailto:btj@havleik.no <ma...@havleik.no>>>>
>     >     >     > To: "MyFaces Discussion" < users@myfaces.apache.org
>     <ma...@myfaces.apache.org>
>     >     <mailto:users@myfaces.apache.org
>     <ma...@myfaces.apache.org>>
>     >     >     <mailto: users@myfaces.apache.org
>     <ma...@myfaces.apache.org>
>     >     <mailto:users@myfaces.apache.org
>     <ma...@myfaces.apache.org>>>>
>     >     >     > Sent: Wednesday, May 04, 2005 8:08 AM
>     >     >     > Subject: Re: Servlet Filter?
>     >     >     >
>     >     >     >
>     >     >     >> Yes, I am.... Maybe I'll check the request path...
>     >     >     >>
>     >     >     >> BTW, is SecurityFilter something else or just another
>     name for
>     >     >     filter?
>     >     >     >>
>     >     >     >>
>     >     >     >> BTJ
>     >     >     >>
>     >     >     >> hermod.opstvedt@dnbnor.no
>     <ma...@dnbnor.no>
>     >     <mailto:hermod.opstvedt@dnbnor.no
>     <ma...@dnbnor.no>>
>     <mailto:hermod.opstvedt@dnbnor.no <ma...@dnbnor.no>
>     >     <mailto: hermod.opstvedt@dnbnor.no
>     <ma...@dnbnor.no>>> wrote:
>     >     >     >>
>     >     >     >>> Hi
>     >     >     >>>
>     >     >     >>> I seem to remember that (look in an earlier thread)
>     there is a
>     >     >     problem
>     >     >     >>> with that. Are you calling a faces page within that
>     pattern?
>     >     >     >>>
>     >     >     >>> One soulution is to use the top-levek aproach and then
>     >     check the
>     >     >     >>> requestpath in your filter (I use SecurityFilter for
>     this).
>     >     >     >>>
>     >     >     >>> Hermod
>     >     >     >>>
>     >     >     >>> -----Original Message-----
>     >     >     >>> From: Bjørn T Johansen [mailto: btj@havleik.no
>     <ma...@havleik.no>
>     >     <mailto:btj@havleik.no <ma...@havleik.no>>
>     >     >     <mailto: btj@havleik.no <ma...@havleik.no> <mailto:
>     btj@havleik.no <ma...@havleik.no>>>]
>     >     >     >>> Sent: Wednesday, May 04, 2005 1:59 PM
>     >     >     >>> To: MyFaces Discussion
>     >     >     >>> Subject: Re: Servlet Filter?
>     >     >     >>>
>     >     >     >>>
>     >     >     >>> Yes, I discovered that there seems to be something
wrong
>     >     with my
>     >     >     >>> pattern...
>     >     >     >>> If I use /* as the pattern, it works...
>     >     >     >>> But if I use /protected/* then the filter is not
>     called..
>     >     ( I.e.
>     >     >     I want
>     >     >     >>> to protect
>     >     >     >>> every file and subfolders inside a folder called
>     >     protected, how
>     >     >     should
>     >     >     >>> my pattern
>     >     >     >>> look like?
>     >     >     >>>
>     >     >     >>>
>     >     >     >>> BTJ
>     >     >     >>>
>     >     >     >>> hermod.opstvedt@dnbnor.no
>     <ma...@dnbnor.no>
>     >     <mailto:hermod.opstvedt@dnbnor.no
>     <ma...@dnbnor.no>> <mailto:
>     >     hermod.opstvedt@dnbnor.no <ma...@dnbnor.no>
>     <mailto: hermod.opstvedt@dnbnor.no
>     <ma...@dnbnor.no>>> wrote:
>     >     >     >>>
>     >     >     >>>> Hi
>     >     >     >>>>
>     >     >     >>>> I am using filters (for taking care of Hibernate
>     >     sessions) and it
>     >     >     >>>
>     >     >     >>>
>     >     >     >>> works
>     >     >     >>>
>     >     >     >>>> like a charm. However I did mess up initially because
I
>     >     forgot
>     >     >     to add
>     >     >     >>>> the correct mapping, which then resultet in the same
>     >     behaviour.
>     >     >     >>>>
>     >     >     >>>> Make sure you have somthing like this in your
>     web.xml file:
>     >     >     >>>>
>     >     >     >>>> <filter-mapping>
>     >     >     >>>> <filter-name><<your_filtername>></filter-name>
>     >     >     >>>> <url-pattern>/*</url-pattern>
>     >     >     >>>> </filter-mapping>
>     >     >     >>>>
>     >     >     >>>> Hermod
>     >     >     >>>>
>     >     >     >>>> -----Original Message-----
>     >     >     >>>> From: Bjørn T Johansen [mailto: btj@havleik.no
>     <ma...@havleik.no>
>     >     <mailto:btj@havleik.no <ma...@havleik.no>>
>     >     >     <mailto:btj@havleik.no <ma...@havleik.no>
>     <mailto:btj@havleik.no <ma...@havleik.no> >>]
>     >     >     >>>> Sent: Wednesday, May 04, 2005 1:43 PM
>     >     >     >>>> To: myfaces-user@incubator.apache.org
>     <ma...@incubator.apache.org>
>     >     <mailto: myfaces-user@incubator.apache.org
>     <ma...@incubator.apache.org>>
>     >     >     <mailto:myfaces-user@incubator.apache.org
>     <ma...@incubator.apache.org>
>     >     <mailto: myfaces-user@incubator.apache.org
>     <ma...@incubator.apache.org>>>
>     >     >     >>>> Subject: Servlet Filter?
>     >     >     >>>>
>     >     >     >>>>
>     >     >     >>>> I have a struts application where I am using Filter
and
>     >     Tomcat and
>     >     >     >>>
>     >     >     >>>
>     >     >     >>> this
>     >     >     >>>
>     >     >     >>>> works as it
>     >     >     >>>> should... But trying to do the same thing with a JSF
>     >     application
>     >     >     >>>
>     >     >     >>>
>     >     >     >>> doesn't
>     >     >     >>>
>     >     >     >>>> work? Are
>     >     >     >>>> there something I am missing? The init() method is
>     >     called, but
>     >     >     >>>
>     >     >     >>>
>     >     >     >>> doFilter
>     >     >     >>>
>     >     >     >>>> is never
>     >     >     >>>> called, why?
>     >     >     >>>>
>     >     >     >>>>
>     >     >     >>>> Regards,
>     >     >     >>>>
>     >     >     >>>> BTJ
>     >     >     >>>>
>     >     >     >>>
>     >     >     >>
>     >     >     >
>     >     >
>     >
>     >
> 
>