0

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

我有两个 jspf 片段:其中header.jspf包含我所有 jsp 页面的通用代码。我包括这样的片段:footer.jspfWEB-INF/jspf/

<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 上进行了测试。

4

1 回答 1

1

将新的文件扩展名添加到 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>
于 2016-02-06T00:18:44.643 回答