Как включить файл JSP, расположенный «над» папкой public_html - PullRequest
1 голос
/ 06 августа 2011

Во-первых, я из PHP-фона (что может быть очевидно по этому вопросу).Это такая простая задача для выполнения в PHP, но я совершенно озадачен тем, как сделать это с помощью jsp.

Это моя структура папок на сервере:

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

public_htmlкаталог, обслуживаемый Apache Tomcat.Поэтому, если кто-то зайдет на мой домен (sampledomain.com), он увидит index.jsp

. Я не хочу, чтобы файл «footer.jsp» был доступен напрямую через Интернет.Таким образом, он находится в каталоге include, который расположен на один каталог выше «index.jsp». Невозможно ввести URL-адрес в браузере, чтобы напрямую перейти к footer.jsp.

Вот содержимое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>

Я получаю сообщение о том, что файл "/../include.footer.jsp" не можетбыть найденным.Как включить файл, который находится вне каталога public_html веб-страницы.

В php я бы просто сделал

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

Ответы [ 3 ]

5 голосов
/ 06 августа 2011

Что касается причины проблемы, все, что находится за пределами корня веб-контента, не является частью контекста веб-приложения JSP / Servlet и не должно рассматриваться как таковое.Вы должны держать свои веб-файлы в корне веб-контента.Вполне возможно, что несколько (и независимых) веб-приложений JSP / Servlet работают вместе в родительской папке веб-приложения.Если бы все, что вы пытались сделать, было возможным, это было бы утечкой целостности.

Что касается функциональных требований:

Я не хочу, чтобы "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 на самом деле также (как при использовании скриптлетов : /), но не , что много.

0 голосов
/ 07 июня 2016

имел эту проблему, хотел включить файл, который был в другом каталоге, который был доступен через родительский, и я решил ее с помощью этого: <% @ include file = "../ includes / file.jsp"% >

0 голосов
/ 06 августа 2011

Этот /user/include/footer.jsp должен находиться в папке WebContent проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...