什么servlet api试图解决?

时间:2011-01-12 10:25:01

标签: java servlets java-ee

编辑好人!没有必要把这个问题带到SO的深渊。对于某些SO elitits和/或Java / Sun / Oracle粉丝男孩来说,这可能是一个粗鲁的问题和/或粗鲁的措辞/语言,但我仍然相信这个问题在这里是 合法问题。看看@Thilo的答案,这实际上是建设性的并且给了我几乎所有我需要理解的内容,对Servlet API的原理有了更好的了解。

servlet API看起来很尴尬,我不明白。

  • 它的好处是什么?
  • 它试图解决什么问题?
  • 什么是擅长
  • API是否会忘记良好的网络实践,例如 REST 架构?
  • 为什么我们要使用应用程序,会话,请求范围而不是其他解决方案?
  • 什么使API不是简单的HTTP处理程序

基本上为什么Java平台是唯一一个拥有这样一个API的平台,其他人使用路由或URL到文件系统地图?

3 个答案:

答案 0 :(得分:9)

  • 它有什么好处?

它允许您编写在各种应用程序服务器中运行的(Web)服务器代码。它是一个最小的基础,可以构建更多的高级框架。我想说它是CGI协议的Java等价物。

  • 它试图解决什么问题?

定义一个标准接口来处理请求,其中应用程序服务器管理与用户的通信,并且servlet实现逻辑。

主要思想是程序员可以专注于编写servlet,而不必担心整个HTTP堆栈和服务器(这就是作为打包解决方案的应用程序服务器所需要的)。

它尝试处理的不仅仅是HTTP(例如通过电子邮件发送的请求),这可能有点过度(或者,在常规使用中被授予,尴尬)。

  • 擅长什么?

成功成为标准。它已被所有Java应用程序服务器供应商采用。没有相关的竞争解决方案(可能是一些本地协议,但没有跨平台)。

  • API是否会忘记REST架构等良好的Web实践?

API并不关心。它的工作水平较低。 TCP / IP对良好的Web实践也不感兴趣。

  • 什么使API不是简单的HTTP处理程序

Servlet API是一种简单的HTTP处理程序的Java方式。真的没有更多的东西。除非简单,否则表示它不需要任何生命周期和配置管理。

你怎么写一个“简单的HTTP处理程序”?如果你的答案是“从public static void main开始,绑定一个监听套接字,然后从那里继续”,那么是的,你不需要servlet API。但是如果你想重用任何类型的标准工具或库,你需要一些他们都同意的API(封装请求和配置数据等)。

如果您将自己绑定到特定的HTTP服务器,您实际上可以在没有servlet API的情况下编写代码。我认为Jetty有一个原生接口作为javax.servlet的替代品。

但严重的是,servlet API没有任何根本性的错误。

答案 1 :(得分:5)

Servlet API允许向Web服务器添加自定义功能。 它不会忘记REST API。 REST API是在Servlet API发布10年后引入的,并且是在java中的servlet API之上实现的。

需要应用程序范围来共享应用程序层上的数据。会话和请求范围也是如此。

答案 2 :(得分:0)