myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig McClanahan <craig...@gmail.com>
Subject Re: Servlet Filter?
Date Thu, 05 May 2005 01:41:52 GMT
On 5/4/05, Matt Blum <mblum42@gmail.com> 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.
>  

Matt has it right, but with one cautionary note -- the <dispatcher>
element was added in Servlet 2.4.  If you're running on a Servlet 2.3
environment (such as Tomcat 4.x), you're stuck with the fact that
filters only work on the original request, and not on forwards or
includes.

>  Hope this helps.
>  -Matt
> 

Craig


> 
> On 5/4/05, Bjørn T Johansen <btj@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 <mailto:btj@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 <mailto: btj@havleik.no>>
> > >     > To: "MyFaces Discussion" <users@myfaces.apache.org
> > >     <mailto:users@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 <mailto:hermod.opstvedt@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
> > >     <mailto: btj@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 <mailto: hermod.opstvedt@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
> > >     <mailto:btj@havleik.no>]
> > >     >>>> Sent: Wednesday, May 04, 2005 1:43 PM
> > >     >>>> To: myfaces-user@incubator.apache.org
> > >     <mailto:myfaces-user@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
> > >     >>>>
> > >     >>>
> > >     >>
> > >     >
> > >
> > 
> 
>

Mime
View raw message