tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Kirk" <tomcat-u...@web-startup.co.uk>
Subject Should a missing jsp:include target cause TC to throw an exception or HTTP error code?
Date Fri, 21 Oct 2005 17:57:01 GMT

TC 5.5.9
WinXP SP2
JDK 1.5.0_02-b09

My webapp framework is based around my own Invoker servlet, which response
to every request via a generic JSP build page.  This build page itself
includes other files, as shown in this snippet:

	<jsp:include page = "<%= "layout/" + pageLayoutName + "_begin.jsp"
%>" />
	<jsp:include page = "<%= jspPageName %>" />
	<jsp:include page = "<%= "layout/" + pageLayoutName + "_end.jsp" %>"
/>

Each request to the webapp is received by a servlet, which forwards to the
JSP snippetted above to render the response, and the JSP decides which JSPFs
to assemble to customise the response layout according to the request.

This all worked fine.  Then I accidentally omitted 2 JSP fragment files from
the war file when reorganising my code - the files referred to in lines 1
and 3 above.  I would expect that to cause a runtime exception of some sort
if the target files don't exist. (Right?)  However, no exception is thrown.
The build page (that calls the jsp:includes) just carries on and assembles
the rest of the page, omitting the files that it can't find.  Hmmmmm.  Sort
of nice that it doesn't complain, but also sort of worrying.

Having had a brief look at the TC source, I focused on the source code of
org.apache.jasper.servlet.JspServlet:279, which appears to show that if the
jsp:include file cannot be found at the specified URI, then TC will return
an HTTP 404 status code in this situation, if I am understanding it
correctly:

// snippet from JspServlet#serviceJspFile

	if (null == context.getResource(jspUri))
	{
      	response.sendError(HttpServletResponse.SC_NOT_FOUND, jspUri); //
this is the line in the stacktrace
		return;	// to calling JspServlet#service() method
	}

But, the weird thing is, my current TC server does not appear to do that.
Each page is returned with a SC of 200.  No exceptions logged at all.  The
only defect is that the response pages don't include the two JSPF files.

I'm concerned that I have done something to the config of my webapp that is
suppressing the error somehow. But I also realise that I might have
misinterpreted what I have read of the TC source files.

So I have two questions please:

Q1: have I understood correctly, that TC should throw an exception or HTTP
SC if it can't find a jsp:include file when processing a JSP?

Q2: what might I have done that could suppress this sort of error?

There is more to this problem, but I won't post the next chapter because the
answers to Q1 and Q2 might change what is relevant for me to post.

Thanks.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message