首先,我来自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") ?>
答案 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;