JSP 包含指令标签

JSP include directive tag

JSP 包含指令标签:

据我了解,当您通过 DIRECTIVE 标记包含文件时,除非重新编译包含文件,否则不会处理包含文件中所做的任何更改。 但是当我在包含的文件中进行更改时,只要按刷新就会显示更改!怎么可能因为我重新编译了包含文件?不应显示更改。

我刚刚对包含的文件进行了更改,保存并刷新浏览器,更改正在显示!

自动编译已启用。它检查文件的最后修改时间并编译它。

这真的取决于您使用的应用程序服务器。

作为参考,JSP 规范在 JSP.1.10.3:

节中说明

A JSP container can include a mechanism for being notified if an included file changes, so the container can recompile the JSP page. However, the JSP 2.2 specification does not have a way of directing the JSP container that included files have changed.

如果您使用的是 WebSphere Application Server,默认情况下,如果只有子项(包含的 jsp)已更改,则通过 include 指令进行的包含不会导致重新编译父项 JSP。如果用户想要这种行为,那么他们会在应用程序的 WEB-INF/ibm-web-ext.xml 文件中将 "trackDependencies" JSP 属性设置为 "true",默认情况下为 false。

如果您正在使用 Tomcat,那么我相信当您 运行 处于 Jasper 2 的开发模式(默认)时,这是预期的行为。
Tomcat 文档在这里: http://tomcat.apache.org/tomcat-8.0-doc/jasper-howto.html 说明:

Recompile JSP when included page changes - Jasper 2 can now detect when a page included at compile time from a JSP has changed and then recompile the parent JSP.

如果您想关闭该行为,那么我相信您需要将 development 设置为 false tomcat_home/conf/web.xml 文件,就像这样(在 jsp 部分文件):

<init-param>
 <param-name>development</param-name>
 <param-value>false</param-value>
</init-param>