我正在使用jetty maven插件开发我的玩具项目并执行目标jetty:run
。现在我决定检查它在tomcat上的工作原理。
我有两个jspf片段:header.jspf
和footer.jspf
在WEB-INF/jspf/
内,包含所有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上进行了测试。
答案 0 :(得分:1)
向mywebapp / WEB-INF / web.xml文件添加新的文件扩展名。为什么Tomcat没有做这个默认我不知道。默认值在conf / web.xml文件中,您也可以编辑它。另一个servlet引擎可能使用不同的servlet名称,因此这只是Tomcat解决方案。
public class CustomHeaderTextView extends TextView {
public CustomHeaderTextView(Context context) {
super(context);
}
public CustomHeaderTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomHeaderTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}