在 WEB-INF 文件夹下包含 JSP 文件

Posted

技术标签:

【中文标题】在 WEB-INF 文件夹下包含 JSP 文件【英文标题】:Include JSP file under WEB-INF folder 【发布时间】:2012-12-30 22:39:51 【问题描述】:

有什么方法可以从本地存储文件夹中包含 JSP 文件,在 WEB-INF 下?

我在我的 config.properties 中定义了绝对路径 $externalFolder 到包含外部 jsp 文件的文件夹,控制器映射到 /page 和 jsp 页面 page.jsp 在 WEB-INF/jsp/ 目录下。

在这个文件page.jsp中我要调用:

WEB-INF/jsp/page.jsp

<%@page session="true" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <html>
...
<body>
<jsp:include page="$externalFolder/someJspFile.jsp" />
</body>
</html>

感谢您的帮助。

【问题讨论】:

WEB-INF 下的任何文件都是受保护的资源。必须通过从ServletContext 调用/WEB-INF/someJspFile.jsp 来访问它。 我知道,但我需要在外部有一些可用的 Jsp 文件。有什么办法可以解决吗? 在它的应用程序或 WAR 文件之外? 是的,但与应用程序在同一台服务器上,只是不同的文件夹。 那么它超出了您的应用程序 Servlet 上下文,我不知道如何将 JSP 文件从上下文中取出并将其添加到您的应用程序“servlet”上下文中。 【参考方案1】:

我使用这个自定义 servlet 解决了这个问题:Content tag lib。

自定义 JSP 标记。允许您将文件内容包含到当前页面中。标记类似于标准 JSP 包含,但现在您可以包含位于 Web 应用程序之外的文件。例如:

 <%@ taglib uri="taglib.tld" prefix="add" %>
 <add:content file="c:/mydata/myfile.jsp"/>

包括给定文件的内容(例如 .html 或 .jsp)。参数为: 1.file:文件的完整路径 2.flush可选参数。可能的值为真或假。如果此值为 true,则标记刷新缓冲区。默认值为 false。 3.cond可选参数。描述一个布尔值标签的行为依赖。默认值为 true(包括内容)。

【讨论】:

以上是关于在 WEB-INF 文件夹下包含 JSP 文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥 WEB-INF 文件夹中的 jsp 文件有效,但放在 WEB-INF 下的文件夹下无效?

JSP 中的问题:按钮 Click() 上的转发(当目标 jsp 在 web-inf 文件夹下时)

在java中怎么访问web-inf 目录下的jsp页面。

eclipse WEB-INF下文件夹中的jsp文件无法运行

jsp 项目中 web.xml 的作用

怎么访问web-inf目录下的文件