我正在基于JSP的webapp中进行一些基本的模板制作。例如,我希望有一个标准的页眉和页脚(基本HTML),我把它拉到我的每个JSP中。
我的内容JSP位于www.com.cn/WEB-INF/JSP/home。jsp,我在WEB-INF/jsp/template/上有模板jsp,例如WEB-INF/jsp/template/Body Footer。jsp。
现在,在家里。jsp,我想拉入我的模板文件。首先,我尝试jsp:include操作:
<jsp:include page="template/Body-Footer.jsp"></jsp:include>
它生成错误javax.servlet.ServletException: File
对我来说很奇怪,考虑到Eclipse说路径是有效的。
好的,然后我切换到包含指令:
<%@ include file="template/Body-Footer.jsp" %>
这工作得很好,拉入我的页脚超文本标记语言。
但是为什么jsp:include不起作用?经过一些实验,我发现放入绝对路径确实可以使其工作:
<jsp:include page="/WEB-INF/jsp/template/Body-Footer.jsp"></jsp:include>
现在它工作正常,没有错误。
我的问题是:为什么?为什么我(显然)需要对jsp:include操作使用绝对路径,而不是include指令?
我阅读了JSP 2.0规范,在这里:
Relative URL Specifications
* A context-relative path is a path that starts with a slash (/).
It is to be interpreted as relative to the application to which
the JSP page or tag file belongs. That is, its ServletContext
object provides the base context URL.
* A page relative path is a path that does not start with a
slash (/). It is to be in- terpreted as relative to the current
JSP page, or the current JSP file or tag file, depending on where
the path is being used.
目前javax.servlet.ServletContext.getRealPath("/WEB-INF/test/test.jsp")
出于安全原因为空。
假设上下文相对路径是来自战争根的路径。
为什么?jsp:include是一个运行时指令,不同于
请参阅有关使用JSP:include的:JSP性能的更多信息
底线-指令以不同的文件夹为基础运行。
顺便说一句,如果您想遵循官方建议,JSP页面应该位于WEB-INF文件夹之外:
JavaEE 6教程-Web模块结构
/WEB-INF/jsp/template/Body-Footer。jsp不是绝对路径。这也是一条相对路径。问题是模板/正文页脚。jsp是一个不完整的相对路径,而另一个是完整的。也就是说,路径是相对于应用程序路径的。由于应用程序路径下有WEB-INF,因此必须将其包括在内。绝对路径的意思类似于程序文件/tomcat/webapps/yourapp/WEB-INF/jsp/template/Body-Footer。jsp
问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置
我有以下问题。当我想在我的Gradle依赖项中使用一个本地jar时。 如果我只是补充一句: 不管用. C:\users\kai\androidStudioProjects\projecta\app\src\main\Java\de\xyz\xxx\projecta\baseActivity.Java:21:错误:包com.pushlink.android不存在导入com.pushlink.andr
主要内容:什么是当前工作目录,什么是绝对路径与相对路径,Python处理绝对路径和相对路径在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。 什么是当前工作目录 每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。 注意,虽然文件夹是目录的更新的名称,但当前工作目录(或当前目录)是标准术语,没有当前工作文件夹这种说法。 在 Python 中,利用 os.getcwd() 函数可以取得当前工作路径的字
在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置,例如,在《 Linux文件系统的层次结构》中提到的 /home/cat 就表示的是 cat 文件所存放的位置。只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。 指明一个文件存放的位置,有 2 种方法,分别是使用 绝对路径和 相对路径。 我们知道,Linux 系统中所有的文件(目录)都被组织成以根
我想引用一个固定位置的jar文件供多个可执行jar使用,而不是在每个可执行文件中包含该jar。我有以下设置工作良好 但是我想用绝对路径来处理commons-math3-3.6.1.jar,以便testgradle.jar这样的可执行JAR可以从它们所在的任何目录中使用它。但是,如果我更改testgradle.jar manifest以包括完整路径: 则命令: 从testgradle/build/l
问题内容: 我有文件A的绝对路径。 我有一个从文件A的目录到文件B的相对路径。此路径可以并且将使用“ ..”以任意复杂的方式向上移动目录结构。 范例A: 示例B: 我如何结合这两者以获得 最简单的 绝对路径到文件B? 问题答案: 如果我的问题正确,那么您可以执行以下操作: