我在找尋javax.servlet.http.HttpServlet
,javax.servlet.GenericServlet
和javax.Servlet
的區別,找不到它。GenericServlet,HttpServlet和Servlet有什麼區別?
「準確的區別」 是指
- 使用
- 背後的原因
javax.servlet.GenericServlet
存在
我在找尋javax.servlet.http.HttpServlet
,javax.servlet.GenericServlet
和javax.Servlet
的區別,找不到它。GenericServlet,HttpServlet和Servlet有什麼區別?
「準確的區別」 是指
javax.servlet.GenericServlet
存在「精確差」 的含義是什麼?該API列出了確切的差異。
Servlet
is an interface defining what a servlet must implement.
GenericServlet
is just that, a generic, protocol-independent servlet.
HttpServlet
is a servlet tied specifically to the HTTP protocol.
你問的時候你最好使用任何這些?
一般而言,您將延伸HttpServlet
來實現應用程序的Web層。
如果您正在編寫自己的容器或自己處理所有內容,則可能需要執行Servlet
。您可以擴展GenericServlet
以處理不同的協議,但您可能不會。
+1對於'你可能會實現Servlet'重新寫你自己的容器或自己處理一切' – UnKnown 2015-10-16 17:55:30
的javax.servlet
Servlet是一個服務器端Web技術。顧名思義,它提供客戶端請求並從服務器接收響應。你必須實現javax.Servlet(接口)來處理一個servlet的工作。
javax.servlet.GenericServlet的
簽名:
public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable
javax.servlet.http。的HttpServlet
簽名:
public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
這個答案摘自http://javapapers.com/servlet/difference-between-httpservlet-and-genericservlet/ – 2013-01-15 14:17:57
對我來說最好的答案 – 2017-06-24 14:44:29
javax.servlet.Servlet是接口,它定義了所有實現的方法 - 這就是接口通常所做的。
javax.servlet.GenericServlet是獨立於協議的。它是抽象的,所以它不被直接實例化。如果您有一天需要爲HTTP以外的協議編寫servlet,那麼它是可用的類來擴展。
javax.servlet.http.HttpServlet是抽象類,如果要通過HTTP協議進行通信,則要擴展。很可能你只需要關心這個。
您可以在鏈接後面找到更準確的信息。
HttpServlet
是特定於HTTP協議,因此它爲HTTP動詞供給方法:doGet
,doPost
等,和版本的一般service
方法,它有特定的HTTP請求和響應的對象。它是一種特殊類型的Servlet
,它實際上是一個非常小的界面。
GenericServlet
是Servlet
接口的基本協議中立實現。通常,您會在API中找到類似的基本接口實現;在這種情況下,GenericServlet
爲Servlet
API添加了一些功能:getServletName
,getServletInfo
以及servlet初始參數的傳遞方法。 HttpServlet
通過擴展GenericServlet
從這些添加中受益。
通常,針對此API編碼的每個人都使用HttpServlet
來實現HTTP Web服務,但也可以使用自定義協議或另一個現存協議(例如FTP)來擴展或使用GenericServlet
來實現服務器/服務功能。
- >GenericServlet
可以處理來自單個表單的多個客戶端請求。而HttpServlet
可以處理多個客戶請求多個HTML
表單。
- >GenericServlet
是無狀態的,HttpServlet
是有狀態的。
的Servlet: -
GenericServlet類: -
的HttpServlet: -
- >一個共同特點是,這兩個類是抽象類。
- > GenericServlet類是一個超類HttpServlet類的。
- >的主要區別在於,HttpServlet的依賴而GenericServlet類的協議是協議無關。所以GenericServlet可以處理所有類型的協議,但HttpServlet只處理HTTP特定的協議。
- > GenericServlet類屬於javax.servlet包。 HttpServlet屬於javax.servlet.http包
- > GenericServlet是一個抽象類,它擴展了Object並實現了Servlet,ServletConfig和java.io.Serializable接口。 HttpServlet是一個抽象類,它擴展了GenericServlet並實現了java.io.Serializable接口。
- > GenericServlet類僅支持服務()方法中不包含的doGet()和doPost()方法。 HttpServlet還支持doGet(),doPost(),doHead()方法(HTTP 1.0)和doPut(),doOptions(),doDelete(),doTrace()方法(HTTP 1.1)。
javax.servlet
包中的所有類,接口和方法都是協議獨立(對所有協議都是通用的)。
相反,所有類,接口,和存在於javax.servlet.http
封裝方法是協議依賴(特定於HTTP協議)
Servlet是包含以在使用的servlet我們有五個抽象方法的接口爲所有這五種方法提供實施,這是一個令人頭疼的問題。爲了避免這種複雜性,我們將GenericServlet和HttpServlet用於下一級。
GenericServlet類是獨立的協議,這意味着它可以接受任何協議請求。 GenericServlet可以轉發幷包含請求,但我們不能重定向請求。 通過Cookie和HttpSession進行會話管理在GenericServlet中是不可能的。 在GenericServlet中,不可能爲get和post請求定義單獨的邏輯。
HttpServlet依賴於協議。這意味着,它只接受HTTP協議請求。 HttpServlet可以轉發幷包含並重定向請求。 在HttpServlet中可以使用Cookie和HttpSession進行會話管理。 在HttpServlet中,可以爲獲取和發佈請求定義單獨的邏輯。
我喜歡你的答案。 請也喜歡我的回答。 – 2018-01-11 12:02:31
這只是已經在他們的javadocs回答。你讀過它嗎? [Servlet](http://docs.oracle.com/javaee/6/api/javax/servlet/Servlet.html),[GenericServlet](http://docs.oracle.com/javaee/6/api/javax /servlet/GenericServlet.html)和[HttpServlet](http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServlet.html) – BalusC 2012-07-17 20:20:49