在 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 文件夹下时)