サーブレット学習の概要(1)

1.サーブレットインターフェース実装クラス

サーブレットはサーブレット仕様のインターフェースであり、このインターフェースはHttpサーバーで提供されるjarパッケージに存在します。

tomcatの下のservlet-api.jarパッケージのjavax.servlet.Servletインターフェースで、このインターフェースの内容を見ることができます。

package javax.servlet;

import java.io.IOException;

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}

サーブレット仕様では、Httpサーバーが呼び出すことができる 動的リソースファイルはサーブレットインターフェイスを実装する必要があると考えられてます

動的リソースファイルでない場合、サーバーはそれを呼び出す権利がありません。有効な動的リソースファイルである場合、サーブレットインターフェイスを実装するクラスである必要があります。

サーブレットインターフェースを実装するクラス、サーバー(tomcatなど)はそれを呼び出すことができます

2.サーブレットインターフェース実装クラスの記述プロセス

         最初のステップ:Javaクラスを作成してHttpServlet親クラス継承し、それをサーブレット実装インターフェースクラスにします。

        サーブレットインターフェイスを実装するのは有効な動的リソースファイルではありませんか?次の図を参照してください。

  

  

 oneServletはHttpServlet継承しますHttpServletはGenericServletを継承します GenericServletはサーブレットインターフェースを実装します

oneServlet(サブクラス)

HttpServlet(父クラス) 

GenericServlet(おじいちゃんクラス)おじいちゃんはサーブレットを実装し、サブクラスもサーブレットインターフェースを実装します

注意すると、親クラスとおじいちゃんクラスの両方が抽象クラスであることがわかりますが、なぜそれらを抽象クラスにする必要があるのでしょうか。

抽象クラスの役割を確認します。インターフェイス実装クラスからインターフェイス実装までの難易度を下げます。

インターフェイスで使用する必要のない抽象メソッドは、完了するために抽象クラスに渡されるため、インターフェイス実装クラスは、実装する必要のあるメソッドを書き直すだけで済みます 。これにより、インターフェイスの実装の難しさが大幅に軽減されます。実装クラスであり、必要なメソッドを実装するだけで済みます。

分析:

サーブレットインターフェイスには、次の5つの抽象メソッドがあります。

import java.io.IOException;

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}

service()メソッドのみが有用であり、他の4つの抽象メソッドインターフェース実装クラスには役に立たない

    1. HttpServlet(親クラス)がコードを調べて、これら5つのメソッドのいずれも実装されていないことを確認します

    2. GenericServlet(祖父クラス)がコードをチェックし、service()メソッドを除く実装クラス、他の4つのメソッドがすべて実装されていることを確認します。

 3. GenericServlet(祖父クラス)はservice()メソッドを残しますが、これは実装されていません

     ステップ2:インターフェース実装クラスはdoget()またはdopost()メソッドを書き換えます

これはかなり奇妙です。サーバー(Tomcatなど)は、サーブレットの仕様に従ってサーブレットインターフェイス実装クラスを呼び出します。次の2つの手順を実行すると役立ちます。

1. Tomcatには、サーブレットインターフェイス実装クラスのインスタンスオブジェクトを作成する権利があります(法的動的リソースファイル、Tomcatには呼び出す権利があります)

       サーブレット1 =新しいoneServlet();

2. Tomcatサーバーは、インスタンスオブジェクトに従ってservice()メソッドを呼び出して、現在の要求処理ます。

     one.service();

ただし、このインターフェイス実装クラスにはservice()メソッドはなく、代わりにdoget()またはdopost()メソッドをオーバーライドします。

ソースコードを見て、そうであることを確認してください

HttpServlet(親クラス)はGenericServlet(祖父クラス)をオーバーライドしてservice()メソッドを残しhttpServlet抽象クラスにはdopost()、doget()...、oneServlet(サブクラス)などの多くのリクエストメソッドメソッドがあります)dogetをオーバーライドします()またはdopost()メソッド

Tomcatサーバーは、インターフェイス実装クラスのサンプルオブジェクト(このメソッドは親クラスHttpServlet)に従ってservice()メソッドを呼び出します。サブクラスにそのようなメソッドがない場合は、上位レベルに移動して、存在するかどうかを確認します。この方法

HttpServletを抽象クラスのサービス()メソッドことが分かるブラウザによって開始された要求メソッド得るストリングメソッド= req.getMethodを();

GETリクエストかPOSTリクエストかを判断するには、(oneServlet)サブクラスのdoget()メソッドまたはdopost()メソッドを呼び出します。

これは、Tomcat(サーバー)がオブジェクトServlet one = new oneServlet()を作成する方法を示しています。  

ここではあなたが見ることができるこのキーワードを、Tomcatはインタフェースの実装クラスのオブジェクト、作成サーブレット1 =新しいoneServlet()サービス()メソッドを呼び出して、1)(サービスを

実際、ここではデザインパターンが使用されています--------テンプレートデザインパターン

おすすめ

転載: blog.csdn.net/weixin_43725517/article/details/112559310