我无法从子目录中包含jsp文件。我必须将include子文件夹中的文件包含到测试文件夹中的文件中。
我试过这段代码
<%@ include file="../../include/file.jsp"%>
在文件../test/sample.jsp
但是我收到了像
这样的错误org.apache.jasper.JasperException: /all.jsp(132,1) File "/../../include/file.jsp" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:300)
org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:333)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:442)
org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1749)
org.apache.jasper.compiler.Parser.parse(Parser.java:127)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:120)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:180)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:326)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
更新:我认为问题与tomcat有关。当我以前将根文件夹映射为tomcat中的上下文时,它正在工作,当我将根文件夹添加为主机时,问题就出现了。我想用它作为主持人。
在这个tomcat配置中,它不起作用:
<Host name="abc.test" appBase="c:\abcd"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="c:\abcd" reloadable="true" crossContext="true">
..................................................................
...............................................................
</context>
</host>
但它适用于以下配置
<Host name="abc.test" appBase="c:\abc"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/lang" docBase="c:\subdir" reloadable="true" crossContext="true">
..................................................................
...............................................................
</context>
<Context path="/" docBase="c:\subdir" reloadable="true" crossContext="true">
..................................................................
...............................................................
</context>
</host>
即,子文件夹中的jsp包含在http://abc.test/lang/中工作,但它不适用于http://abc.test 在这两种情况下,都可以包含同一目录中的文件
答案 0 :(得分:1)
我发现使用完整路径信息(从根目录)sans领先斜线似乎工作...
换句话说,而不是
../../../Directory/file
我用:
FirstSubDir/SecondSubDir/ThirdSubDir/Directory/file
包括前导斜杠(即:/FirstSubDir/Se...
)似乎会引起与上述相同的问题。
答案 1 :(得分:0)
由于include伪指令采用相对路径,因此您可以从站点的根目录开始,而不是使用../语法。所以你可以尝试:/include/file.jsp。