3

“web-app_*.dtd”参考 web.xml 是否确定了 Web 应用程序中使用的 Servlet 和 JSP 版本?

不知怎的,我一直有这样的印象,但似乎我错了。我有一个 web.xml 指定的应用程序

<!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

我在想它应该使用 Servlet 2.3 版。但是,当我将以下代码放入我的 JSP 中时,我得到了一个完全不同的版本。

<div>
Server info: <%= application.getServerInfo() %><br>  
Servlet version: <%= application.getMajorVersion() %>.<%= application.getMinorVersion() %>  
JSP version: <%= JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %><br> 
</div>

输出:

Server info: Apache Tomcat/7.0.21
Servlet version: 3.0
JSP version: 2.1

我将感谢一些相关问题的帮助:。

  • dtd 版本是否与应用程序中使用的 Servlet 和 JSP 版本有任何关系?
  • 我的应用程序是否使用 Servlet 3.0 版,因为这是 Apache Tomcat 7 使用的默认版本?
  • 有没有办法让 Tomcat 7 使用旧的 Servlet JSP 版本?
  • 此页面上的一条评论(由 Bauke Scholtz 撰写)似乎表明每个 Servlet 版本都与 JSP 版本相关联。这总是真的吗?
4

2 回答 2

1

dtd 版本是否与应用程序中使用的 Servlet 和 JSP 版本有任何关系?

是的,它告诉服务器应用程序是在哪个版本中开发的。

我的应用程序是否使用 Servlet 3.0 版,因为这是 Apache Tomcat 7 使用的默认版本?

不,服务器可以支持 3.0 并不意味着您的应用程序使用 3.0 因为您的应用程序是 servlet 2.5,所以 servlet 3.0 的功能将为您禁用。

有没有办法让 Tomcat 7 使用旧的 Servlet JSP 版本?

是的。第一个问题的答案,你的 web.xml

此页面上的一条评论(由 Bauke Scholtz 撰写)似乎表明每个 Servlet 版本都与 JSP 版本相关联。这总是真的吗?

大部分是的。它不是紧密耦合的。但是每个服务器都遵循 JavaEE 标准,每个 JavaEE 标准都应该确认一些规范及其版本。例如,JavaEE 5 需要 Servlet 2.5 和 JSP 2.1,JavaEE 6 需要 Servlet 3.0 和 JSP2.2。

于 2012-04-12T09:51:59.670 回答
0

dtd 版本是否与应用程序中使用的 Servlet 和 JSP 版本有任何关系?

是的。

我的应用程序是否使用 Servlet 3.0 版,因为这是 Apache Tomcat 7 使用的默认版本?

是的。

有没有办法让 Tomcat 7 使用旧的 Servlet JSP 版本?

不,您需要获得早期版本的 Tomcat。

此页面上的一条评论(由 Bauke Scholtz 撰写)似乎表明每个 Servlet 版本都与 JSP 版本相关联。这总是真的吗?

是的。

于 2012-04-12T09:50:00.900 回答