この画像 (ここから取得したもの) では、HTTP要求がDispatcher Servlet に何かを送信します。

私の質問は、Dispatcher Servletは何をするのですか?
Webページからスローされた情報を取得してコントローラーにスローするようなものですか?
この画像 (ここから取得したもの) では、HTTP要求がDispatcher Servlet に何かを送信します。

私の質問は、Dispatcher Servletは何をするのですか?
Webページからスローされた情報を取得してコントローラーにスローするようなものですか?
DispatcherServletの仕事は、着信 URI を取得し、ハンドラー (通常はコントローラークラスのメソッド) とビュー (通常は JSP) の適切な組み合わせを見つけて、その場所で見つかるはずのページまたはリソースを形成することです。
私は持っているかもしれません
/WEB-INF/jsp/pages/Home.jspおよびクラスのメソッド
@RequestMapping(value="/pages/Home.html")
private ModelMap buildHome() {
return somestuff;
}
Dispatcher サーブレットは、ブラウザーがページを要求したときにそのメソッドを呼び出し、その結果を一致する JSP ファイルと組み合わせて html ドキュメントを作成することを「知っている」ビットです。
これを実現する方法は、構成と Spring のバージョンによって大きく異なります。
また、最終結果が Web ページでなければならない理由もありません。RMIエンドポイントの検索、 SOAPリクエストの処理、サーブレットに入る可能性のあるものすべてに対して同じことができます。
Spring MVC では、すべての受信リクエストが単一のサーブレットを通過します。このサーブレット - DispatcherServlet- がフロントコントローラーです。フロントコントローラーは、Webアプリケーション開発における代表的なデザインパターンです。この場合、単一のサーブレットがすべてのリクエストを受け取り、それらをアプリケーションの他のすべてのコンポーネントに転送します。
のタスクはDispatcherServlet、特定の Spring MVC コントローラーにリクエストを送信することです。
通常、多くのコントローラがありDispatcherServlet、ターゲット コントローラを決定するために次のマッパーのいずれかを参照します。
BeanNameUrlHandlerMapping;ControllerBeanNameHandlerMapping;ControllerClassNameHandlerMapping;DefaultAnnotationHandlerMapping;SimpleUrlHandlerMapping.構成が実行されていない場合、デフォルトで と が使用DispatcherServletされます。BeanNameUrlHandlerMappingDefaultAnnotationHandlerMapping
ターゲット コントローラが識別されると、 はDispatcherServletそれにリクエストを送信します。DispatcherServletコントローラーは、要求に従っていくつかの作業を実行し (またはそれを他のオブジェクトに委譲し)、モデルとビューの名前を使用して に戻ります。
ビューの名前は単なる論理名です。次に、この論理名を使用して実際のビューを検索します (コントローラーと特定のビューとの結合を避けるため)。次にDispatcherServlet、 を参照しViewResolver、ビューの論理名をビューの特定の実装にマップします。
のいくつかの可能な実装は次のViewResolverとおりです。
BeanNameViewResolver;ContentNegotiatingViewResolver;FreeMarkerViewResolver;InternalResourceViewResolver;JasperReportsViewResolver;ResourceBundleViewResolver;TilesViewResolver;UrlBasedViewResolver;VelocityLayoutViewResolver;VelocityViewResolver;XmlViewResolver;XsltViewResolver.がDispatcherServlet結果を表示するビューを決定すると、それが応答としてレンダリングされます。
最後に、はオブジェクトをクライアントにDispatcherServlet返します。Response
DispatcherServletフロントコントローラーパターンのSpring MVCの実装です。
こちらのSpringドキュメントの説明を参照してください。
基本的には、着信要求を受け取り、その要求の処理を多数のハンドラーの 1 つに委譲するサーブレットであり、そのマッピングはDispatcherServlet構成で固有です。
DispatcherServletSpring MVC ですべてを処理するようなものです。
Web コンテナの起動時:
DispatcherServletinit()メソッドを呼び出すことによってロードおよび初期化されます
init()ofは、すべての Bean を識別できるDispatcherServletような命名規則で Spring 構成ドキュメントを識別しようとし
ます。"servlet_name-servlet.xml"例:
public class DispatcherServlet extends HttpServlet {
ApplicationContext ctx = null;
public void init(ServletConfig cfg){
// 1. try to get the spring configuration document with default naming conventions
String xml = "servlet_name" + "-servlet.xml";
//if it was found then creates the ApplicationContext object
ctx = new XmlWebApplicationContext(xml);
}
...
}
そのため、通常DispatcherServletはリクエスト URI をキャプチャして に渡しHandlerMappingます。HandlerMappingコントローラーのメソッドでマッピング Bean を検索します。ここで、コントローラーは論理名 (ビュー) を返します。次に、この論理名が によって送信さDispatcherServletれHandlerMappingます。次に、プレフィックスとサフィックスを追加してビューの完全な場所を提供するようにDispatcherServlet指示し、クライアントにビューを提供します。ViewResolverDispatcherServlet
Dispatcher Controller が図に表示されており、すべての着信要求は、フロント コントローラーとして機能する Dispatcher サーブレットによってインターセプトされます。ディスパッチャ サーブレットは、XML ファイルからハンドラ マッピングへのエントリを取得し、リクエストをコントローラに転送します。