If you're using Servlet 2.4 (such as Tomcat 5.x or later), you can
configure a filter to be applied on RequestDispatcher.forward() and
RequestDispatcher.include() calls, as well as on the original request.
 See the docs for the revised <filter-mapping> element.  If you are on
Servlet 2.3, there is no solution to getting filters invoked on RD
calls -- it is not supported.

Craig


On Sat, 04 Dec 2004 22:59:23 +0000, Brij Naald <[EMAIL PROTECTED]> wrote:
> thanks for the help,
> But the problem remains. The SecurityFilter will put a wrapper around the
> request, but my filter also wants to set some attributes (the lastServlet)
> right.
> 
> Example:
> Assume that you type in /servlet1 in your browser. In that case the filter
> will get called, it will put the wrapper around the request, and then
> forward the control to servlet1.
> 
> But if servlet1 contains the code:
> RequestDispatcher dispatcher =
> getServletContext().getRequestDispatcher("/servlet2");
> dispatcher.include(request, response);
> 
> Then the filter will not be called again, and the control will be passed
> directly to servlet2
> 
> That way, my application will not get the update that servlet2 is called.
> 
> Do you see a solution for this?
> 
> Thanks a lot already!
> 
> -----------------------------------------
> 
> 
> Brij,
> 
> I think I saw a usable filter solution when reading through the code of
> Security Filter.  If I recall correctly, their filter code uses the
> HttpServletRequestWrapper class and adds their own getUserPrincipal()
> orverloading method.  Surely you could do the same with your
> getServletPath() by overriding it in a subclass of
> HttpServletRequestWrapper.
> 
> The Java code this model is class
> org.securityfilter.filter.SecurityRequestWrapper in CVS at:
> http://cvs.sourceforge.net/viewcvs.py/securityfilter/securityfilter/src/shar
> e/org/securityfilter/filter/SecurityRequestWrapper.java?rev=1.9&view=auto
> 
> To implement the HttpServletRequestWrapper subclass within a filter, see
> org.securityfilter.filter.SecurityFilter in CVS at:
> http://cvs.sourceforge.net/viewcvs.py/securityfilter/securityfilter/src/shar
> e/org/securityfilter/filter/SecurityFilter.java?rev=1.23&view=auto
> 
> Regards,
> David
> 
> -----Original Message-----
> From: Brij Naald [mailto:[EMAIL PROTECTED]
> Sent: Saturday, December 04, 2004 3:53 PM
> To: [EMAIL PROTECTED]
> Subject: RE: Filter/...
> 
> My application needs to know the path of the servlet which is going to be
> called.
> Therefore the filter does:
> 
> setLastServlet(((HttpServletRequest)request).getServletPath());
> 
> and then the filter invokes the servlet wtih a wrapper around its request
> 
> The wrapper overrides the
> public Object getAttribute(String name)
> 
> and only gives access to the attribute with name 'name' if the servlet which
> is called has the right path for that attribute. Therefore the wrapper needs
> to now the 'LastServlet'.
> 
> (So the problem is that the filter is only invoked at the beginning of the
> request. When a servlet does dispatcher.include, the setLastServlet of the
> filter won't be called anymore, and the "LastServlet" isn't the correct one
> anymore)
> 
> --------------------------
> >Interesting issue. Anyway, can't think of anything that solves it in a
> >clean
> >way.
> >
> >If you give me (if you can) further information about what your filter
> >does,
> >I could give it  a try at thinking about an alternative solution.
> >
> >Cheers,
> >
> >F.
> 
> _________________________________________________________________
> Koop geen kat in een zak. Probeer alles 14 dagen bij jou thuis.
> http://linkstat.neckermann.de/go.mb1?benl_11294
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to