gpt4 book ai didi

jsp - 为什么 tomcat 包含 *.jspf 片段作为静态文本而码头动态处理它们?

转载 作者:行者123 更新时间:2023-11-28 22:52:47 27 4
gpt4 key购买 nike

我正在使用 jetty maven 插件开发我的玩具项目并执行目标 jetty:run。现在我决定检查它在 tomcat 上是如何工作的。

我有两个 jspf 片段:header.jspffooter.jspfWEB-INF/jspf/ 里面,包含所有的公共(public)代码我的jsp页面。我包括这样的片段:

<jsp:include page="WEB-INF/jspf/header.jspf" flush="true">
<jsp:param name="pageTitle" value="Customer registration"/>
</jsp:include>

Jetty 将它们处理为动态片段,而 tomcat 将它们处理为静态文本,这就是为什么我可以看到:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

在我浏览器的网页开头。通过将*.jspf 重命名为*.jsp,可以轻松解决tomcat 的问题。问题是:为什么不同的 servlet 容器行为不同?我在 tomcat 8/9 和 jetty 9.3.7 上进行了测试。

最佳答案

为 mywebapp/WEB-INF/web.xml 文件添加一个新的文件扩展名。我不知道为什么 Tomcat 不执行此默认设置。默认值在 conf/web.xml 文件中,您也可以对其进行编辑。另一个 servlet 引擎可能使用不同的 servlet 名称,因此这是 Tomcat 唯一的解决方案。

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspf</url-pattern>
</servlet-mapping>

关于jsp - 为什么 tomcat 包含 *.jspf 片段作为静态文本而码头动态处理它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35235291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com