の正確な違いを探しjavax.servlet.http.HttpServlet
てjavax.servlet.GenericServlet
いjavax.Servlet
ましたが、見つけることができませんでした。
「正確な差」とは
- 使用法
javax.servlet.GenericServlet
存在理由
「正確な違い」とはどういう意味ですか? API には、正確な違いがリストされています。
Servlet
サーブレットが実装する必要があるものを定義するインターフェースです。
GenericServlet
プロトコルに依存しない汎用サーブレットです。
HttpServlet
HTTP プロトコルに特化したサーブレットです。
それらのいずれかをいつ使用するかを尋ねていますか?
HttpServlet
一般に、アプリケーションの Web レイヤーを実装するために拡張します。
Servlet
独自のコンテナーを作成している場合や、すべてを自分で処理している場合は、実装できます。GenericServlet
別のプロトコルを処理するように拡張することもできますが、そうでない場合もあります。
javax.サーブレット
サーブレットは、サーバー側の Web テクノロジです。名前が示すように、クライアントの要求を処理し、サーバーからの応答を受け取ります。サーブレットの作業を処理するには、javax.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
javax.servlet.Servletはインターフェースであり、すべての実装のメソッドを定義します。これが、インターフェースが通常行うことです。
javax.servlet.GenericServletはプロトコルに依存しません。これは抽象的であるため、直接インスタンス化することはできません。HTTP 以外のプロトコル用のサーブレットを作成する必要がある場合に拡張するのに使用できるクラスです。
javax.servlet.http.HttpServletは、HTTP プロトコルで通信する場合に拡張する抽象クラスです。ほとんどの場合、これだけを気にする必要があります。
リンクの背後にあるより正確な情報を見つけることができます。
-> 共通の機能の 1 つは、これらのクラスが両方とも抽象クラスであることです。
→ 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() メソッドを含まない service() メソッドのみをサポートします。HttpServlet は、doGet()、doPost()、doHead() メソッド (HTTP 1.0)、および doPut()、doOptions()、doDelete()、doTrace() メソッド (HTTP 1.1) もサポートします。
HttpServlet
は HTTP プロトコルに固有であるため、HTTP 動詞 、 などのメソッドと、HTTP 固有の要求および応答オブジェクトを受け取る汎用メソッドのバージョンを提供doGet
しますdoPost
。これは、実際には非常に最小限のインターフェイスservice
である特殊なタイプです。Servlet
GenericServlet
Servlet
インターフェイスの基本的な、プロトコルに依存しない実装です。多くの場合、API でインターフェイスの同様の基本的な実装を見つけることができます。この場合、 APIGenericServlet
に少しの機能を追加します。サーブレットの初期化パラメーターの、、およびパススルー メソッドです。を拡張することにより、これらの追加の恩恵を受けます。Servlet
getServletName
getServletInfo
HttpServlet
GenericServlet
通常、この API に対するコーディングはすべてHTTP Web サービスの実装に使用されますが、カスタム プロトコルまたは別の現存するプロトコル (FTP など) を使用して、サーバー/サービス機能の実装にHttpServlet
拡張または使用することもできます。GenericServlet
--> GenericServlet
1 つのフォームから複数のクライアント要求を処理できます。一方、複数のフォームHttpServlet
から要求された複数のクライアントを処理できます。HTML
-->GenericServlet
ステートレスでHttpServlet
ステートフルです。
javax.servlet
パッケージに存在するすべてのクラス、インターフェイス、およびメソッドは、プロトコルに依存しません (すべてのプロトコルに共通)。
対照的に、javax.servlet.http
パッケージに存在するすべてのクラス、インターフェース、およびメソッドはプロトコルに依存します (HTTP プロトコルに固有)。