jsp - 指定我的Java Web应用程序的Servlet和JSP版本

标签 jsp web-applications servlets

“ 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版本?
关于this page的评论之一(由Bauke Scholtz撰写)似乎表明每个Servlet版本都与JSP版本相关。这总是真的吗?

最佳答案

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标准都应确认某些规范及其版本。对于Ex,JavaEE 5需要Servlet 2.5和JSP 2.1,JavaEE 6需要Servlet 3.0和JSP2.2。

关于jsp - 指定我的Java Web应用程序的Servlet和JSP版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10121002/

相关文章:

jsp - jsp :useBean 的 class 和 beanName 属性的区别

html - JSP 在 Websphere Application Server 8.5 上加载不完整

html - 在 DispatcherServlet 中找不到资源文件的映射

java - 无法从 Struts 2 中的 session 获取属性

java - 单击复选框时 Wicket 检索 CheckGroup 的模型

java - SSL Servlet 实现问题 : received a record that exceeded the maximum permissible length

java - hibernate java.lang.OutOfMemoryError : Java heap space

api - REST API上的用户注册/身份验证流程

Java : Intercept all requests before they go to login authentication

java - 无法导入 javax.servlet.annotation.WebServlet