有没有编程的方法来确定可用的Java EE环境版本?
ServletContext
对象中以实现无关的方式获取servlet api版本。查找getMajorVersion()
和getMinorVersion()
方法。JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion()
web.xml
中的<web-app version>
会影响ServletContext#getMajorVersion()
和getMinorVersion()
。理论上,这可以设置为2.5,而容器本身支持3.0。容器随后以回退模式运行。如果必要,可以与检查类路径中是否存在Servlet 3.0特定类(例如@WebServlet
注释)相结合,具体取决于OP需要此信息的原因。 - BalusCget[Effective]{Major|Minor}Version()
。详情请参阅JavaDoc。 - Per Lindbergorg.apache.catalina.core.Constants
类获取运行时的Servlet API版本。例如:if (Constants.MINOR_VERSION == 2 && Constants.MINOR_VERSION == 5) {
// Servlet 2.5
} else if(Constants.MINOR_VERSION == 3 && Constants.MINOR_VERSION == 0) {
// Servlet 3.0
} ...