如何在public_html文件夹“上方”包含一个jsp文件

时间:2011-08-05 20:24:13

标签: jsp include

首先,我来自PHP背景(这个问题可能很明显)。这是在PHP中完成的一项简单任务,但我对如何使用jsp实现这一点感到非常困惑。

这是我在服务器上的文件夹结构:

/home +
      |
      +-/user-+
            |
            +-/includes+
            |          |
            |          +/footer.jsp
            |
            +-/public_html+
                          |
                          +/index.jsp

public_html是Apache Tomcat服务的目录。因此,如果有人浏览我的域名(sampledomain.com),他们会看到index.jsp

我不希望直接通过网络访问“footer.jsp”。因此,它位于includes目录中,该目录位于“index.jsp”上方的一个目录中。您可以在浏览器中输入以直接访问footer.jsp的URL。

以下是footer.jsp的内容

<div id="footer">
    <p>This is a footer</p>
</div>

这是index.jsp

的内容
<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <meta charset="UTF-8" />
</head>
<body>
    <h1>Hello World</h1>
    <%@ include file="../includes/footer.jsp" %>
</body>
</html>

我收到一条tomcat错误,说找不到文件“/../includes.footer.jsp”。如何在网页的public_html目录之外包含一个文件。

在php中,我只是做

<?php include("../includes/footer.php") ?>

3 个答案:

答案 0 :(得分:5)

关于问题的原因,Web内容根目录之外的任何内容都不是JSP / Servlet Web应用程序上下文的一部分,因此不应该这样看。您需要将Web文件保留在Web内容根目录中。多个(和独立的)JSP / Servlet Web应用程序很可能在webapp的父文件夹中一起运行。如果您尝试的任何事情都可能发生完整性泄漏。

关于功能要求:

  

我不希望直接通过网络访问“footer.jsp”。

/WEB-INF文件夹可用于此目的。将文件放在那里。

/home/user/ 
/home/user/public_html/index.jsp
/home/user/public_html/WEB-INF/includes/footer.jsp

并相应地修复@include

<%@ include file="/WEB-INF/includes/footer.jsp" %>

最后但并非最不重要的是,请不要将PHP与JSP进行比较。 PHP文化充斥着许多漏洞和糟糕的做法。 JSP实际上也是(如使用 scriptlets :/),但不是那个

答案 1 :(得分:0)

此/user/includes/footer.jsp应位于项目的WebContent文件夹中。

答案 2 :(得分:0)

有这个问题,想要包含一个文件,该文件位于另一个目录上,可通过父文件访问,我使用此解决了它:&lt;%@ include file =&#34; ../ includes / file的.jsp&#34; %GT;