首先,我来自PHP背景(这个问题可能很明显).这是在PHP中完成的一项简单任务,但我对如何使用jsp实现这一点感到非常困惑.
这是我在服务器上的文件夹结构:
/home +
|
+-/user-+
|
+-/includes+
| |
| +/footer.jsp
|
+-/public_html+
|
+/index.jsp
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
这是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>
Run Code Online (Sandbox Code Playgroud)
我收到一个tomcat错误,说无法找到文件"/../includes.footer.jsp".如何包含网页的public_html目录之外的文件.
在PHP中,我只是这样做
<?php include("../includes/footer.php") ?>
Run Code Online (Sandbox Code Playgroud)
至于问题的原因,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
Run Code Online (Sandbox Code Playgroud)
并相应地修复@include
:
<%@ include file="/WEB-INF/includes/footer.jsp" %>
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的是,请不要将PHP与JSP进行比较.PHP文化充斥着许多漏洞和糟糕的做法.JSP实际上也(如使用scriptlets:/),但不是那么多.
归档时间: |
|
查看次数: |
7280 次 |
最近记录: |