You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Mark Mynsted <MM...@vha.com> on 2001/05/04 17:40:40 UTC

RequestDispatcher failure

Has anybody seen this behavior?

If I use the following code I get no errors.

RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);


If I use the following code I get a null pointer exception because
dispatcher is null.

RequestDispatcher dispatcher = application.getRequestDispatcher(url);
dispatcher.forward(request, response);


This does not make sense to me.

request is the subclass of javax.servlet.ServletRequest for this
request.  application is the javax.servlet.ServletContext.  I know
that application is defined because I use it all the time for logging,
e.g. application.log("This is a log message");


Both the javax.servlet.ServletRequest and javax.servlet.ServletContext 
have a getRequestDispatcher(String) method.

Sincerely yours;

Mark Mynsted



VHA Management Information Systems Client Services
mmynsted@vha.com
(972) 830 - 0592, Internal x1592


Re: RequestDispatcher failure

Posted by Mark Howell <ma...@nullcraft.org>.
Mark,

The relative paths of URLs from the request are differrent than those of the
application.  I don't immediately recall the exact differrences, but I believe
a url specified as "foo.jsp" that calls http://server/app/foo.jsp from the
request.getRequestDispatcher(url) would have to be 'app/foo.jsp' from the
application.getRequestDispatcher(url).  Though I haven't tested this, and it
is probably not correct, my point is that the paths are not necessarily the
same in the request context as they are in the application context.  When
either getRequestDispatcher(url) method cannot find the url, it returns null.

This is discussed in the servlet and/or jsp spec.

-Mark Howell
mark@nullcraft.org 

Mark Mynsted wrote:
> 
> Has anybody seen this behavior?
> 
> If I use the following code I get no errors.
> 
> RequestDispatcher dispatcher = request.getRequestDispatcher(url);
> dispatcher.forward(request, response);
> 
> If I use the following code I get a null pointer exception because
> dispatcher is null.
> 
> RequestDispatcher dispatcher = application.getRequestDispatcher(url);
> dispatcher.forward(request, response);
> 
> This does not make sense to me.
> 
> request is the subclass of javax.servlet.ServletRequest for this
> request.  application is the javax.servlet.ServletContext.  I know
> that application is defined because I use it all the time for logging,
> e.g. application.log("This is a log message");
> 
> Both the javax.servlet.ServletRequest and javax.servlet.ServletContext
> have a getRequestDispatcher(String) method.
> 
> Sincerely yours;
> 
> Mark Mynsted
> 
> VHA Management Information Systems Client Services
> mmynsted@vha.com
> (972) 830 - 0592, Internal x1592