【问题标题】:jsp:include doesn't make new requests to get updated filejsp:include 不会发出新的请求来获取更新的文件
【发布时间】:2017-08-24 18:21:53
【问题描述】:

我试图了解 jsp:include 的作用,从Oracle Tutorial 我发现:

执行 JSP 页面时会处理 jsp:include 元素。包含操作允许您在 JSP 文件中包含静态或动态资源。包含静态资源和动态资源的结果是完全不同的。如果资源是静态的,则其内容将插入到调用 JSP 文件中。如果资源是动态的,则将请求发送到被包含的资源,执行被包含的页面,然后将结果包含在来自调用 JSP 页面的响应中。

所以我期待这种行为:一个 jsp 页面(第一个)包含在另一个(第二个)中 -> 如果我更改服务器上第一页的内容并刷新第二页,我会看到一些变化。但是好像不行。

我有includes.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <jsp:include page="manipulations.jsp" />
</body>
</html>

我的操作.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>I love Java</p>
</body>
</html>

项目结构:

首先,我访问 includes.jsp(localhost:8080/includes.jsp) 并看到文本“我爱 Java”。然后我更改文件操作.jsp("I love Java" -> "I love JSP") 中的文本并保存它。然后我刷新includes.jsp 并没有看到任何变化(仍然是“我喜欢Java”)。为什么会这样?我对这个元素的理解有误吗?

【问题讨论】:

    标签: jsp


    【解决方案1】:

    即使您改用指令,问题是否仍然存在?

    <%@include file="manipulations.jsp"%>
    

    尝试冲洗:

    <jsp:include page="manipulations.jsp" flush="true" />
    

    如果其中任何一个都不起作用,那么我认为问题出在您的cache settings 上。如果您每次重新启动服务器并清理/重建/刷新,我愿意花很多钱来更新内容。

    【讨论】:

    • 如果我每次更改文件时都使用指令和/或重新启动服务器,我会看到更改。冲洗不起作用。我按照您链接的答案中的建议向Tomcat的web.xml添加了开发初始化参数,尝试在不同的浏览器中运行,检查了我的context.xml(它没有antiResourceLocking)。我的服务器时间已同步,并且我的 tomcat 文件夹没有勾选“只读”。接下来我应该尝试什么?
    • 我的 App Engine 服务器上也有这个问题,并没有真正解决它。但是,如果我在“调试模式”下运行(而不仅仅是“运行”),那么我会看到更改。调试模式显然会强制在每次构建时刷新所有文件。但实际上这应该在正常运行模式下发生,您应该尝试四处寻找服务器中未打开或关闭的设置(双击它)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2023-04-10
    • 2012-04-06
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多