Anders,
I apologize if I totally missed the mark or the wall it was on but I'm capable
of infinite stupidity. Anyways, I only try to help.
Anders Kristensen wrote:
> Hi,
>
> I'm trying to implement the 2.1 version of the servlet API and I have a
> question about how the RequestDispatcher mechanism is supposed to work
> plus a report of a couple of bugs in JSDK 2.1.
>
> RequestDispatcher.include makes it possible to include the output of
> another servlet into the output of the invoked servlet and the included
> servlet sees the same info in response to getServletPath, getPathInfo,
> getRequestURI as does the original servlet.
>
> This appears to me to be a problem when the included resource is a
> static file being served by a (system) FileServlet. In this case the
> FileServlet would use the getPathTranslated (or something similar) to
> figure out which file it should ship back. However, if it was invoked
> from some other servlet using, say,
>
> RequestDispatcher disp = ctxt.getRequestDispatcher ("/somepath.txt");
> disp.include(request, response);
>
I don't understand what's happening here. Use getResource to include a static
file. You just said at the beginning that include is to include the output of
another servlet. Why do you then talk about including a static file by the
same means?
>
> it wouldn't see "/somepath.txt" in response to getPathTranslated. It is
> possible to achieve the desired behaviour by having FileServlet first
> check the request attribute javax.servlet.include.path_info and only if
> this returns null use getPathInfo. Is this how the JSDK/JWS works?
> This basically means that *all* servlets using the extra path info needs
> to perform this extra step, as they won't otherwise work with the
> inclusion mechanism, and that seems a bit clunky to me. Maybe it would
> be better for included servlets to see altered request info (as does
> servlets forward()'ed to)?
>
I don't understand. How can you see /somepath.txt in any part of request? You
are not processing the request in the static file (somepath.txt) but you are
processing request in servlet to which you want to include a file. You would
see what you are talking about from within the included servlet.
>
> Anther question: Is it OK for a path argument to getRequestDispatcher
> to include a query string? I guess so since include() arranges for it to
> appear in the javax.servlet.include.query_string request attribute. But
> on the other side a forwarded request doesn't report those params. What
> gives?
>
You mean like this:?
getServletContext().getRequestDispatcher("/servlet/SomeServlet?param=two")
.include(request,response);
I don't see why not if that's what you mean.
>
> Also, I believe the following are bugs in JSDK 2.1:
>
> o RequestDispatcher.include throws an exception if the
> ServletOutputStream has already been obtained. This is the
> correct behaviour for forward but not for include.
It seems to work fine for me.
>
> o When a request URI has no extra path, getPathInfo() returns the
> empty string rather than null.
Seems to work fine too.
>
> o Parameters in an HTTP URL are URL decoded but the servlet path
> isn't (try for example "%2Fsnoop").
>
[host]/servlet%2FSnoopServlet
Works fine too
>
> Regards,
> Anders
>
> --
> Anders Kristensen <[EMAIL PROTECTED]>,
> http://www-uk.hpl.hp.com/people/ak/
> Hewlett-Packard Labs, Bristol, UK
>
> ___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
lata'
dave.
--
David Mossakowski [EMAIL PROTECTED]
http://www.dwdog.com/styk 212.310.7275
"I don't sit idly by, I'm planning a big surprise"
F U G A Z I
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html