编辑好人!没有必要把这个问题带到SO的深渊。对于某些SO elitits和/或Java / Sun / Oracle粉丝男孩来说,这可能是一个粗鲁的问题和/或粗鲁的措辞/语言,但我仍然相信这个问题在和这里是和 合法问题。看看@Thilo的答案,这实际上是建设性的并且给了我几乎所有我需要理解的内容,对Servlet API的原理有了更好的了解。
servlet API看起来很尴尬,我不明白。
基本上为什么Java平台是唯一一个拥有这样一个API的平台,其他人使用路由或URL到文件系统地图?
答案 0 :(得分:9)
它允许您编写在各种应用程序服务器中运行的(Web)服务器代码。它是一个最小的基础,可以构建更多的高级框架。我想说它是CGI协议的Java等价物。
定义一个标准接口来处理请求,其中应用程序服务器管理与用户的通信,并且servlet实现逻辑。
主要思想是程序员可以专注于编写servlet,而不必担心整个HTTP堆栈和服务器(这就是作为打包解决方案的应用程序服务器所需要的)。
它尝试处理的不仅仅是HTTP(例如通过电子邮件发送的请求),这可能有点过度(或者,在常规使用中被授予,尴尬)。
成功成为标准。它已被所有Java应用程序服务器供应商采用。没有相关的竞争解决方案(可能是一些本地协议,但没有跨平台)。
API并不关心。它的工作水平较低。 TCP / IP对良好的Web实践也不感兴趣。
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)