GenericServletとHttpServletの違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


GenericServletとHttpServletの主な違いは、GenericServletはプロトコルに依存せず、HTTP、SMTP、FTP、CGIなどの任意のプロトコルで使用できるのに対し、HttpServletはHTTPプロトコルにのみ使用されるという点です。

サーブレットは、スケーラブルで堅牢なWebアプリケーションの開発を支援するJava技術です。

プラットフォームに依存しないサーバーサイドコンポーネントです。

また、Servletは、Servletインタフェースの実装、GenericServlet抽象クラスの拡張、HttpServlet抽象クラスの拡張の3つの方法で記述することが可能である

Servletインターフェースは、GenericServletとHttpServletのスーパーインターフェースです。

5つの抽象メソッドを持ち、GenericServletとHttpServletはこれらのメソッドを継承しています。

スポンサーリンク

GenericServletとは

GenericServletは、Servletインターフェイスの直系のサブクラスです。

つまり、Servletインターフェースから継承したメソッドである service () は、GenericServletでは抽象メソッドです。

Servletインターフェースから継承した他の4つのメソッドはGenericServletに実装されています。

GenericServletクラスを継承するプログラマは、service () メソッドをオーバーライドして、その実装を記述する必要があります

また、GenericServletは、SMTP、CGI、FTP、HTTPなどのプロトコルで使用されます。

そのため、プロトコルに依存しません。

つまり、WebがHTTPプロトコルに標準化されていなかった頃にも使用することができます。

HttpServeltとは

現在、ほとんどのWebアプリケーションはHTTPプロトコルを使用しています。

HttpServletは、HTTPプロトコルをサポートするために設計されています。

また、このクラスは抽象クラスです。

さらに、HttpServletの直属のスーパークラスはGenericServletです。

HttpServletは、GenericServletのserviceメソッドをオーバーライドしています。

サービスメソッドと同じパラメータを持つdoGet()またはdoPost()を使用して、サービス(メソッド)を置き換えることが可能です

HttpServletはGenericServletのサブクラスであり、GenericServletのプロパティとメソッドを継承しています。

従って、HttpServletを拡張する場合、両クラスの機能を利用することができます。

GenericServletとHttpServletの相違点

定義

GenericServletは、Servlet、ServletConfigおよびSerializableインターフェイスを実装したクラスで、これらのインターフェイスのうちサービスメソッドを除くすべてのメソッドの実装を提供するものです。

HttpServletは、GenericServletを拡張し、HTTP固有のメソッドを提供するSerializableインタフェースを実装したクラスです。

したがって、GenericServletとHttpServletの根本的な違いを示している。

プロトコル依存性

GenericServletとHttpServletの大きな違いは、GenericServletはプロトコルに依存せず、HttpServletはプロトコルに依存することである

サービス方法

また、GenericServletでは、サービスメソッドは抽象化されています。

また、GenericServletでは、サービスメソッドは抽象的であるが、HttpServletでは、サービスメソッドは非抽象的です。

この点もGenericServletとHttpServletの重要な違いと言える。

署名

また、public abstract class GenericServletは、java.lang.Objectを継承し、Servlet、ServletConfig、および、java.io.Serializableを実装しています。

関連するサブクラス

GenericServletは、Servletインターフェースの直接のサブクラスです。

一方、HttpServletは、GenericServletの直接のサブクラスです。

定義済みパッケージ

javax.servletパッケージはGenericServletを定義していますが、javax.servlet.httpパッケージはHttpServletを定義しています。

この点もGenericServletとHttpServletの違いです。

Extending / Implementing

さらに、GenericServletはObjectクラスを拡張し、Servlet、ServletConfig、Serializableの各インターフェイスを実装しています。

HttpServletはGenericServeltを継承し、Serializableインターフェイスを実装しています。

ユーザビリティ

GenericServletとHttpServletのもう一つの違いは、GenericServletは一般的に使われていないのに対し、HttpServletは一般的に使われている点です。

結論

GenericServletとHttpServletの主な違いは、GenericServletがHTTP、SMTP、FTP、CGIなどあらゆるプロトコルで使用できるプロトコル独立型であるのに対し、HttpServletはプロトコル依存型で、HTTPプロトコルでのみ使用されることである

タイトルとURLをコピーしました