【发布时间】:2011-07-09 15:52:23
【问题描述】:
美好的一天!
我正在阅读 Head First Servlets 和 JSP,它说 99% 的 servlet 都使用了 HttpServlet。剩下的 1% 是多少?它说在现实世界中,99.9% 的 servlet 覆盖了 doGet() 或 doPost() 方法。剩下的 0.1% 是多少?还是不值得一提这就是为什么书中没有提到它?
谢谢。
【问题讨论】:
美好的一天!
我正在阅读 Head First Servlets 和 JSP,它说 99% 的 servlet 都使用了 HttpServlet。剩下的 1% 是多少?它说在现实世界中,99.9% 的 servlet 覆盖了 doGet() 或 doPost() 方法。剩下的 0.1% 是多少?还是不值得一提这就是为什么书中没有提到它?
谢谢。
【问题讨论】:
1% 的人没有使用抽象的HttpServlet 类。所以他们使用Servlet接口而不扩展HttpServlet。
目前在 Java EE API 中,只有另一个 Servlet 可以做到这一点:FacesServlet,它是 Java EE 提供的 MVC 框架 JavaServer Faces (JSF) 背后的核心控制器。 JSF 使您能够跳过收集、转换和验证参数、更新模型值和调用特定操作方法所必需的所有繁琐过程和样板代码。
但在撰写本书时,作者可能并未意识到这一点。截至目前,JSF 肯定不只占 1%。在 理论上 可以为 HTTP 以外的其他协议实现 Servlet,例如 FTP。这不是由标准 Java EE API 提供的,但是有一些第 3 方“FtpServlet”类。而且我相信一些 Portlet API 也使用非HttpServlet 类(它们只是实现Servlet 并且不扩展HttpServlet)。
至于HTTP methods,在HTTPGET和POST旁边还有HEAD、PUT、OPTIONS等。但我认为0.1%被严重低估了。 HEAD 肯定更常用,想想 servletcontainer 自己的 DefaultServlet(就像 Tomcat 一样)。 HEAD 在浏览器缓存请求中起着重要作用。但是当谈到“本土”servlet 时,确实是GET 和POST 引起了人们的注意。
【讨论】:
您可以使用 servlet 编写 FTP。那可能是另外 0.1%。
【讨论】:
你可以使用
protected void service(HttpServletRequest request, HttpServletResponse response)
它可以处理 GET 和 POST 请求。 这只是一个附录。 =]
【讨论】: