DispatcherServiceletとは?

5438 ワード

DistpatcherServlet?


Spring MVCの重要な要素であるDispatcherServiceletについて説明します.
この文章は総括的な文章で、実際にはもっと複雑で、プロセスの処理があります.
DispatcherServiceletもサーブレットであり、HttpServiceletを継承します.
「表示レイヤ」(Presentation Layer)では、HTTPプロトコルからの要求を受信し、適切なコントローラに要求を委任するFront Controlと言える.
このように、Webはサーブレットコンテナの先頭からサーバにアクセスするクライアントのすべての要求を受信し、処理する.xmlの役割を大幅に減らしました.
元々はラーメンネット各コントローラはxmlに登録する必要があります.
DispatcherServiceletは、すべてのリクエストを受信し、各コントローラのフロントエンドコントローラに詳細なパスを送信します.xmlにタブレットを1つずつ登録する必要はありません.

上の図を見て動作の流れを見てみましょうか?
①DispatcherServiceletクライアントからWebリクエストを受信します.
②WebリクエストをHandleMappingに依頼し、そのリクエストを処理するHandler(Controller)を探す.
③見つかったHandlerを実行できるHandler Adapterを探します.
④,⑤見つかったHandler Adapterを用いてHandlerメソッドを実行する.このとき,Handlerの戻り値はModelとViewである.
⑥ビュー名をViewResolverに渡し、ViewResolverは対応するビューオブジェクトを返します.
üDispatcherServiceletモデルをViewに渡し、表示を要求します.モデルがnullの場合はViewを使用します.逆に、値がある場合は、モデルデータをビューでレンダリングします.
◇最終DispatcherServiceletは、ビュー結果(HttpServiceResponse)をクライアントに返します.
プロセスは複雑に見えますが.
最終的には、DispatcherServiceletによって適切なコントローラが見つかり、要求を処理し、結果を受信します.
この点はとても簡単です.

設定方法

  • web.xmlでDispatcherServiceletを宣言し、URI要求パスをマッピングします.
    例>
  • <web-app>
        <servlet>
            <servlet-name>example</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>example</servlet-name>
            <url-pattern>*.form</url-pattern>
        </servlet-mapping>
    </web-app>
  • DispatcherServiceletを継承します.@urlPatternsをWebServicelet宣言に割り当てます.@WebServicelet宣言を使用するには、HttpServiceletを継承する必要があります.前述したように、DispatcherServiceletはHttpServiceletを継承するので、ServiceletクラスからDispatcherServiceletを継承しても問題ありません.
  • @WebServlet(name = "helloServlet", urlPatterns = "/hello")
    public class HelloServlet extends DispatcherServlet {}

    Reference


    死刑囚開発者ブログ
    装飾可能
    seculoper velog