On Tue, 2 Apr 2002, Alexander Thomas wrote:

> Date: Tue, 02 Apr 2002 05:57:11 +0200
> From: Alexander Thomas <[EMAIL PROTECTED]>
> Reply-To: Tomcat Users List <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: reading html-form parameters within servlet filter on tomcat
>     4.0.3
>
> Hi gents,
>
> I am trying to set up a servlet filter which uses the
>
> HttpServletRequest.getParameterNames() and
> HttpServletRequest.getParameter(...)
>
> methods.
>
> However, the terminating servlet in the filterchain has to be allowed
> access to these methods as well!
> Currently, I am confronted with an exception indicating that it is not
> allowed to get the ServletInputStream two times.
> I suppose I have to set up appropriate HttpServletRequestWrappers.
> However I am not quiet sure how that is supposed to be done in this
> special case.
>

It is not going to be possible to read the "real" input stream more than
once.  Note that this would occur on a POST even without filters, if you
tried to call getParameter(...) followed by getInputStream() on the same
request.

> Also interessting to note is the fact that tomcat 4.0.3 seems to ignore
> the contents of an offered HttpServletRequestWrapper object while
> evaluating the getParameter method in the terminating servlet. I would
> like do clarify if this behaviour is on purpose (In accordance to the
> spevlet 2.3 spec).
>

The only way to implement this is going to be somewhat memory-expensive --
you have to design a wrapper that buffers the data the first time that
getInputStream() or getReader() is called, and then replays it the second
time.  Note that Tomcat is going to use getReader() -- the POST data is
assumed to be in characters formats -- so that is the one you will
actually need to replace.

> Any help or hint would be highly appreciated,
>
> Regards,
>
>
> Alexander Thomas
>

Craig


--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

Reply via email to