SpringMVC-tutorialspoint



Spring Mvc Tutorialspoint



Spring MVCは、柔軟で疎結合のWebアプリケーションを開発するために、モデルビューコントローラーアーキテクチャと既存のコンポーネントを提供します。 MVCパターンは、コンポーネント間の疎結合を使用して、アプリケーションをさまざまな概念(入力ロジック、ビジネスロジック、およびUIロジック)に分割します。

  • モデル パッケージアプリケーションデータは通常、POJOで構成されます。
  • 見る モデルデータのレンダリングを担当します。これは通常、HTMLを生成し、クライアントブラウザによって解析されます。
  • コントローラ ユーザーの要求と応答の処理、適切なモデルの構築、それらの受け渡しを担当します 見る レンダリング。

1.1 DispatcherServlet

Spring MVCフレームワークは、DispatcherServletを介してすべてのHTTP要求と応答を処理します。 SpringMVCでのDispatcherServletのリクエストフローは次のとおりです。



292448-c92eea1a7983d364.pngリクエストプロセス

DispatcherServletが着信HTTPリクエストに応答する順序は次のとおりです。

  1. HTTPリクエストを受信した後、DispatcherServletはHandleMappingを介して適切なコントローラーを呼び出します。
  2. コントローラはリクエストを受信し、GETまたはPOSTに従って適切なサービスメソッドを呼び出します。 serviceメソッドは、ビジネスロジックに従ってモデルデータを設定し、ビュー名をDispatcherServletに返します。
  3. DispatcherServletは、ViewResolverを介して定義されたビューを選択することにより、要求に応答します。
  4. ビューが初期化されると、DispatcherServletはモデルデータをビューに渡し、最後にブラウザでレンダリングします。

HandlerMapping、Controller、ViewResolverなどの上記のコンポーネントは、Webアプリケーションに必要な機能の一部を追加するApplicationContextの拡張であるWebApplicationContextの一部です。



1.2必要な構成

web.xmlファイルのURLマッピングを使用して、DispatcherServletによって処理されるマッピング要求を手動で構成する必要があります。次のコードは、HelloWebDispatcherServletの定義とマッピングを示しています。

Spring MVC Application HelloWeb org.springframework.web.servlet.DispatcherServlet 1 HelloWeb *.jsp

web.xmlファイルは、WebアプリケーションのWebContent / WEB-INFディレクトリに配置されます。まず、HelloWeb DispatcherServletが初期化されると、フレームワークはWebContent / WEB-INFディレクトリにある[servlet-name] -servlet.xmlという名前のファイルからアプリケーションコンテキストを読み込もうとします。この場合、ファイル名はHelloWeb-servlet.xmlです。次に、タグは、そのDispatcherServletによって処理されるURLを示します。 .jspで終わるすべてのHTTPリクエストは、HelloWebDispatcherServletによって処理されます。

[servlet-name] -servlet.xmlのようなデフォルト名とWebContent / WEB-INFのデフォルトの場所を使用したくない場合は、ContextLoaderListenerサーブレットリスナーをweb.xmlに追加し、ファイル名をカスタマイズして、次のような場所:



.... contextConfigLocation /WEB-INF/HelloWeb-servlet.xml org.springframework.web.context.ContextLoaderListener

または

springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation WEB-INF/spring-mvc.xml 1

次に、WebContent / WEB-INFディレクトリにあるHelloWeb-servlet.xml構成ファイルを見てみましょう。

@Controller @RequestMapping('/hello') public class HelloController{ @RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute('message', 'Hello Spring MVC Framework!') return 'hello' } }

以下は、HelloWeb-servlet.xmlファイルの重要な知識ポイントです。

  • [servlet-name] -servlet.xmlファイルは、グローバルスコープで定義された同じ名前のBeanをオーバーライドする定義済みのBeanを作成するために使用されます。
  • このタグは、@ Controllerや@RequestMappingなどのアノテーションを使用するSpringMVCアノテーションスキャン機能をアクティブ化するために使用されます。
  • InternalResourceViewResolver 定義されたルールはビュー名を処理します。上で定義したルールと同様に、helloという名前の論理ビューは/WEB-INF/jsp/hello.jspのプロキシです。
    次のセクションでは、Controller、Model、Viewなどの実際のコンポーネントを作成する方法について説明します。

1.3コントローラーの定義

DispatcherServletは、特定の機能を実行するために要求をコントローラーに委任します。 @コントローラ アノテーションは、指定されたクラスがコントローラーとして機能していることを示します。 @RequestMapping アノテーションは、URLをクラスまたは特定の処理メソッドにマップするために使用されます。

@Controller public class HelloController{ @RequestMapping(value = '/hello', method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute('message', 'Hello Spring MVC Framework!') return 'hello' } }

@コントローラ アノテーションは、クラスをSpringMVCコントローラーとして定義します。最初 @RequestMapping このコントローラーのすべての処理方法が相対/ helloパスであることを示します。注釈 @RequestMapping(method = RequestMethod.GET) 宣言に使用 pringHello() このメソッドは、コントローラーのデフォルトのメソッドとしてHTTPGETリクエストを処理します。同じURLに対するPOSTリクエストを処理する別のメソッドを定義できます。
上記のコントローラー上に置くことができます @RequestMapping 次のようにプロパティを追加します。

Hello Spring MVC

${message}

この属性は、どのURLが処理メソッドにマップされているかを示します。 方法 この属性は、メソッドがHTTPGET要求を処理することを示します。コントローラの重要な知識ポイントは次のとおりです。

  • 必要なビジネスロジックは、メソッドで定義できます。必要に応じて、メソッド内の別のメソッドを呼び出すこともできます。
  • 定義されたビジネスロジックに基づいて、メソッドで作成できます モデル 。さまざまなモデル属性を設定できます。これらの属性には、ビューからアクセスして最終結果を表示できます。この例では、「message」属性を持つモデルが作成されています。
  • 定義されたメソッドは、モデルをレンダリングするためのビューの名前を含む文字列を返すことができます。この例では、論理ビュー名として「hello」が返されます。

1.4JSPビューの作成

Spring MVCは、JSP、HTML、PDF、Excel、XML、Velocityテンプレート、XSLT、JSON、Atom、RSS、JasperReportなどの複数のタイプのビューをサポートしています。ただし、通常はJSTLを使用してJSPテンプレートを実装します。 こんにちは ビュー(/WEB-INF/hello/hello.jsp)は次のとおりです。

${message}

http://localhost:8080/HelloWeb/helloコントローラーで設定されたプロパティです。ビューには複数のプロパティを表示できます。

EL式の解は値を取得できません:
web.xmlを変更します

http://localhost:8080/HelloWeb1/student

1.5 Spring WebMVCインスタンス

1.5.1単純なインスタンス

URLでreturn new ModelAndView('student', 'command', new Student())アクセス
コードのダウンロード

1.5.2フォーム送信の例

URLでhttp://localhost:8080/HelloWeb2/indexアクセス
http://localhost:8080/HelloWeb3/index JSPファイルでタグを使用する場合、Springは「command」を含むオブジェクトを要求します。
@ModelAttribute アノテーション参考記事 メソッド引数で@ModelAttributeを使用する
コードのダウンロード

1.5.3インスタンスのリダイレクト

URLでhttp://localhost:8080/HelloWeb4/studentアクセス
コードのダウンロード

1.5.4静的ページインスタンス

URLで

|_+_|
アクセス
タグは静的ページをマップするために使用されます。 マッピング httpリクエストのURLを指定するには、属性はAntパターンである必要があります。 ロケーション 属性は、静的ページ(画像、スタイルシート、JavaScript、およびその他の静的コンテンツ)を含む1つ以上の使用可能なリソースディレクトリの場所を指定する必要があります。複数のリソースの場所で、コンマで区切られた値のリストを使用できます。
コードのダウンロード

1.5.5例外処理の例

URLで

|_+_|
アクセス
コードのダウンロード

元の: http://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm