「Spring」サーブレットとは?サーブレット、サーブレット内コンテナの理解


スプリングを使用して開発する場合、HttpServiceRequestやHttpServiceResponseなどのサーブレットという言葉によく遭遇します.
開発の過程で多くのサーブレットが使用されていますが、サーブレットが何なのか、その役割が何なのかは分かりません.この機会に知りたいと思います.

1.入る前に


クライアントからサーバにデータを転送するHTMLフォームでは、サーブレットがサーバ上で果たす役割を見てみましょう.

✔HTML Formデータ送受信時



クライアント側では、次のように名前と年齢を受信できるフォームがあると仮定します.ユーザー名にkimを入力し、年齢に20を入力して「送信」ボタンをクリックすると、Webブラウザは右側に示すようにHTTPメッセージを生成します.データはフォーム形式であるため、HTTPメッセージの内容タイプはアプリケーション/x-www-form-unloadであり、データはusername=kim&age=20の形式で伝送される.

✔▼タブレットがない場合、サーバーに必要なこと


サーバは、上記のデータを受信し、次の操作を実行する必要があります.
  • サーバはTCP/IP接続待ち、スロット接続
  • HTTP要求メッセージのパケット読み出し
  • を行う.
  • POSTフォーム、/save URLか
  • コンテンツタイプ確認
  • HTTPメッセージ本体コンテンツ分割
    -usernameおよびageデータを使用するために
  • グループ化
    実行
  • ストアド・プロシージャ
  • ビジネスロジックの実行
    -要求データベース保存
  • HTTP応答メッセージの生成を開始
    -HTTP開始線の作成
    -ヘッドの作成
    -メッセージボディにHTMLを作成し、
  • と入力します.
  • TCP/IPに応答して、スロット
  • を終了する.
    サーブレットがない場合は、開発者は以上のすべての作業を実施する必要があります.TCP/IPソケット接続、URLの識別、コンテンツタイプのチェック、受信したデータ(メッセージ本体)をパケット化するなどを直接実行します.とても複雑です.また,データの送信と受信のたびに上記の手順を経なければならず,不要なコードが大量に生成される.上記の手順では、ビジネスロジックを実行することが本当に必要です.これがサーブレットです.

    2.サーブレットとは?


    上記の一連のプロセス(TCP/IPソケット接続を直接実行したり、コンテンツタイプをチェックしたり、受信したデータ(メッセージ本体)をパケット化したりするなど)では、サーバ側が上記の操作を実行します.代わりに実行します.このサービスボードを使用すると、開発者は最も重要なビジネスロジックに集中するだけです.

    勘定科目の属性


    次のコードはサーブレットを使用するコードです.
    @WebServlet(name = "helloServlet", urlPatterns = "/hello")
    public class HelloServlet extends HttpServlet {
    
    	@Override
        protected void service(HttpServletRequest request, HttpServletResponse response) {
        	//비즈니스 로직
        }
    }

    コードの説明

  • URL Patterns(/hello)のURLを呼び出すと、HelloServiceのコードが実行されます.
  • HTTPリクエスト情報は、(例ではクライアント->サーバに送信される値)HttpServertRequestによって管理される.
  • HTTP応答情報は、(例ではサーバ->クライアントに送信される値)HttpServeretResponseによって提供される.
  • サーブレットにより,開発者はHTTP Specをより便利に利用できる.

    3. HttpServletRequest, HttpServletResponse


    ✔️ HttpServletRequest


    HttpServiceRequestインタフェースでは、HTTP servletの要求情報を管理するためにServiceRequestを継承しています.getParameterを使用して、クライアントからサーバへの値を表示する方法はいくつかあります.要求ヘッダ情報は、Enumerationに戻るgetHeadersを使用して知ることもできます.

    ✔️ HttpServletResponse


    HttpServeretResponseインタフェースを見てみましょう.HTTP応答を送信し、サーブレットResponseを継承します.HTTPヘッダとCookieにアクセスする方法.サーブレットコンテナにHttpサーブレットResponseオブジェクトを作成し、doGetやdoPostなどのサーブレットサービスメソッドに作成して転送します.

    4.サーブレットの動作とサーブレット内容器


    ✔市市序板の動作原理



    HTTPリクエストが発行されると、図に示すように、Webアプリケーションサーバ(Tomcat)は、新しいリクエストおよびレスポンスオブジェクトを作成し、Subletオブジェクト(例のHelloService)を呼び出す.開発者は,要求オブジェクトからHTTP要求情報を抽出して使用し,ビジネスロジックを実行し,応答オブジェクトにHTTP応答情報を入力することができる.WASは、応答対象のコンテンツに基づいてHTTP応答情報を生成し、その結果をクライアントに送信する.

    ✔市序板容器


    例では、helloサーブレットのみが表示されますが、saveサーブレットやdeleteサーブレットなどの多くのサーブレットが後で追加される場合があります.これらのサーブレットを作成、呼び出し、管理する場所をサーブレットコンテナと呼びます.TomcatのようにサーブレットをサポートするWASをサーブレットコンテナと呼び、サーブレットオブジェクトの作成、初期化、呼び出し、終了のサーブレットライフサイクルを管理します.
    また、テンプレートオブジェクトはモノクロ調で管理されます.お客様が要求するたびに、新しいhelloServiceletオブジェクトを作成し続けるのは非常に効果的ではありません.したがって、最初のスタートポイントで1つ以上のフラットパネルオブジェクトを事前に作成し、必要に応じて取り出して使用することができます.すべてのクライアントからの要求が同じサーブレットオブジェクトインスタンスにアクセスするため、共有変数は同じです.補助板はマルチスレッド処理同時要求をサポートするため、共有変数のSide Effectを使用することを防止することができる.

    5.クリーンアップ:サーブレットの役割


    今日はサーブレットについてサーブレットは、HTTP通信時に開発者にとって便利なツールであり、HttpサーブレットRequest形式でリクエストを送信し、HttpサーブレットResponse形式で応答を送信する.次のレッスンでは、マルチスレッド処理とスレッドプールについて説明します.ありがとう!
    [参考資料]
    (インフラ)金永漢スプリングMVC 1編