ami*_*che 1 java servlets java-ee
编辑好人!没有必要把这个问题带到SO的深渊.对于某些SO elitits和/或Java/Sun/Oracle粉丝男孩来说,这可能是一个粗鲁的问题和/或粗鲁的措辞/语言,但我仍然认为这个问题在这里存在,这是一个合理的问题.看看@Thilo的回答,这实际上是建设性的,并且给了我几乎所有我需要理解的内容,对Servlet API的原因有了更好的了解.
servlet API看起来很尴尬,我不明白.
基本上为什么Java平台是唯一一个拥有这样一个API的平台,其他人使用路由或URL到文件系统映射?
Thi*_*ilo 10
它允许您编写在各种应用程序服务器中运行的(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没有任何根本性的错误.
Servlet API允许向Web服务器添加自定义功能.它不会忘记REST API.REST API是在Servlet API发布10年后引入的,并且是在java中的servlet API之上实现的.
需要应用程序范围来共享应用程序层上的数据.会话和请求范围也是如此.