You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Justin Jaynes <ju...@yahoo.com> on 2006/11/08 05:06:30 UTC

Include Directive Misbehaving

To further complicate this problem, I have tried more experimenting and am becoming more frustrated.

The original situation remains below.

Now if I add a sub-directory to the admin subdirectoy, the directory structure looks like this:

[main host directory (/host)]
index.jsp
header.jsp (ROOT VERSION, with a notation I can see in the html distinguishable from others)
[admin sub directory (/host/admin)
index.jsp
header.jsp (ADMIN VERSION, with a notation)
[user sub directory (/host/admin/user)]
[justin sub directory (/host/admin/user/justin)]
index.jsp

As you can see, I have copied the header.jsp to the sub-directory admin and have altered its contets so I can identify which header.jsp is being used--namely that in the root directory or in the admin directory.

Then in the index.jsp file in the justin subdirectory, I use the code

<%@ include file="../../../header.jsp" %>

to reach the ROOT header.jsp to be included.  But instead, the output in the browser uses the file from the ADMIN directory.

So I figured I should just add ../ once more to move one more level up.  so I did.

<%@ include file="../../../../header.jsp" %>

But it used the ADMIN version again.

<%@ include file="../../../../../../../../header.jsp" %>

actually does too.  What is the problem here?

And trying to go less instead of more,

<%@ include file="../../header.jsp" %>

this also works but uses the ADMIN version.  Which is the expected behavior FOR ONCE.

But then even less

<%@ include file="../header.jsp" %>

gives this error:

org.apache.jasper.JasperException: /sites/14/index.jsp(8,0) File "/sites/14/../header.jsp" not found
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Can someone try to reproduce this error?  I believe that Tomcat 5.5 and 6.0 do not behave properly in this reguard.  Unless I am making a mistake.  If that is the case, please guide me out of it.

Justin

When I enter the same 

----- Original Message ----
From: Justin Jaynes <ju...@yahoo.com>
To: users@tomcat.apache.org
Sent: Monday, November 6, 2006 10:01:00 PM
Subject: Include Directive

Hello,

I am trying to eliminate unnecessary duplication of code by using include directives.  Currently my directory structure is like this:

[main app directory]
index.jsp
header.jsp
footer.jsp
[admin subdirectory]
index.jsp

The index.jsp file in the main directory contains the code <%@ include file="header.jsp" %> and it works great.

In the admin directory the index.jsp file contains this code <%@ include file="../header.jsp" %> obviously referencing to the parent directory, where the header.jsp file sits.  I don't want to have to copy it to the child directory and maintain two copies of it.

But when I do this, I get an error every time.  What am I doing wrong?  You can find the error below.

Justin

HTTP Status 500 - type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
org.apache.jasper.JasperException: /index.jsp(4,0) File "/../header.jsp" not found
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause 
org.apache.jasper.JasperException: /index.jsp(4,0) File "/../header.jsp" not found
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:86)
    org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:339)
    org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:372)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:484)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1556)
    org.apache.jasper.compiler.Parser.parse(Parser.java:126)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)





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







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


Re: Include Directive Misbehaving

Posted by Mark Thomas <ma...@apache.org>.
Justin Jaynes wrote:
> To further complicate this problem, I have tried more experimenting and am becoming more frustrated.

I have just tested all combinations of files and included files for
three levels of directories and everything is working as it should.

Just a guess but...
Is it possible your contexts are not correctly deployed? If your
host's appBase and your web application's docBase point to the same
directory and autoDeploy is enabled you will have all sorts of odd
behaviour since by default *every* directory in a host's appBase gets
deployed as a web application.

HTH,

Mark

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