【问题标题】:Are the Java Servlet APIs backwards compatible?Java Servlet API 是否向后兼容?
【发布时间】:2009-05-13 23:33:36
【问题描述】:

我想编写一个使用 javax servlet API 的 JAR 文件。如果我针对 2.2 版编写,这是否意味着它可以在 2.3、2.4 和 2.5 版上运行?

谢谢

【问题讨论】:

  • 他们为什么不呢?接口重命名相同,这里和那里添加的方法很少......如果行为发生重大变化,那么重用相同的接口没有意义 - 会吗?

标签: java servlets


【解决方案1】:

是的,它们向后兼容。

Oracle Source

【讨论】:

  • 不必要 - 有些东西已被弃用。此外,在 servlet 规范的进一步版本中,有些东西的用途得到了澄清——例如,应该不惜一切代价避免使用 SingleThreadModel——如果您最终在 2.3+ 兼容容器上执行 servlet,则应该避免使用 SingleThreadModel(它是无论如何都是不好的做法)。
  • @MetroidFan2002 你的 SingleThreadModel 例子很好:它在 Servlet 2.4 规范中被正式弃用。
【解决方案2】:

在大多数情况下,不应该有任何兼容性问题。可能有几个陷阱,这取决于你在做什么。如果您正在编写一些装饰容器类的框架,则偶尔会修改接口。例如,ServletRequest.getRemotePort() 方法在 J2EE 1.3 version 中不存在(在 Servlet 2.4 之前)。这些困难是可以克服的,但请注意,您必须将它们纳入您的开发和测试中。

【讨论】:

  • 谢谢。我注意到一件事 - 在 2.2 中你需要使用: HttpUtils.getRequestURL(request).toString();在 2.3+ 中你可以这样做:request.getRequestURL().toString();
【解决方案3】:

它会起作用,但有时某些方法会被弃用,并且可能会引发有关其实施的警告。

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2019-11-14
    • 2021-07-22
    • 2020-01-16
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多