スプリングフレームベース(06):MVCアーキテクチャモデルプロファイル、実行フローの詳細

この記事の出所:GitHubにはこちらをクリック・ || GitEEは・こちらをクリック

A、SpringMvcフレームワーク入門

1、MVCデザイン

書き換えずながらMVCは、サービス・ロジック、データ、組織コード、内部のコンポーネントを収集するビジネスロジックを、分離およびカスタマイズインターフェース及びユーザインタラクションを改善するインタフェース表示方法と、ソフトウェア設計モデルでありますビジネスロジックは、MVCアーキテクチャおよび階層は、複雑なアプリケーションを管理するのに役立ちます

  • M:表現Model

モデルは、コアデータアプリケーションです。

  • V:ビューを表しView

例えばJSPとしてエコーデータインターフェースは、データ・モデルを表示するために使用されます。

  • C:コントローラを表しますController

コントローラの動作は、基準、異なる応答データ(あるModel(異なる図に示されている)、View上)。

2、SpringMvcプロフィール

  • 記述フレームワーク

SpringMVCそれは基づいているJavaの実現MVC軽量のタイプの駆動要求のデザインパターンWebからフレーム、Springフレーム家族のバケツ、およびSpring使用して、フレームのシームレスな統合MVCアーキテクチャ・パターンのアイデア、Webデカップル業務にレイヤーを。

  • フレーム利点

緩い構造は、ほぼSpringMVC図の様々なタイプを使用することは、別個のモジュールとの結合の程度の各々は非常に低く、かつ容易に拡張されます。そして、Spring柔軟で使いやすいシームレスな統合、およびシンプルな、。

二、SpringMvc実行フロー

1、流れ図

図2に示すように、ステップは、に記載さ

(1)、コントローラは、フロントエンドに要求を開始しますDispatcherServlet

(2)、フロントエンドコントローラ要求はHandlerMapping、発見するHandlerことができるxml、注釈を検索するように構成すること。

(3)、プロセッサマッパーは、HandlerMapping遠位端に制御を返しますHandler

(4)コントローラアダプタの前端には、呼処理を実行しますHandler

(5)、アダプタ・プロセッサは実行しますHandler

(6)Handlerアダプタに実行復帰が完了するModelAndView

(7)、アダプタ制御部の前端にプロセッサ戻るとModelAndViewModelAndViewあるspringmvc含む、基礎となるオブジェクトのフレームModelview

(8)コントローラの正面端面図は、論理ビュー実名に解析さの観点から、実行するためにビュー解像度リゾルバを要求します。

(9)が、フロントコントローラリゾルバへビュー戻りますView

(10)、レンダリングのためのコントローラの正面端面図、モデルビューデータ(の描画ModelAndViewオブジェクト)に充填されるrequestドメイン。

(11)、ユーザに結果に応じて、コントローラのフロントエンド。

図3に示すように、コアコンポーネント

  • フロントコントローラ

DispatcherServlet:ブラウザの要求を出た後、のDispatcherServletが到着する最初に、プロセス制御の中心、リピータ、中央プロセッサに対応し、要求、応答結果を受信の役割です。個々の構成要素間の結合の程度を減少させます。

  • プロセッサマッパー

HandlerMapping:XML構成、注釈方法:指定されたインターフェイスにルート要求URLは、ユーザの要求は、例えば、異なるタイプを提供SpringMVCをマッピングする、ハンドラプロセッサを検索します。

  • プロセッサアダプタ

HandlerAdapter:複数のプロセッサ、登場プロセッサアダプタを収容解決するために、治療の様々な方法が同じプロセッサではない複数のプロセッサのための特定の規則ハンドラ、SpringMvcサポートに従って実行します。

  • プロセッサ

Handler:特定のビジネス・ロジックに向けたユーザリクエストを処理、プログラマは、ビジネスニーズに必要です。そのアダプタが正しくハンドラを実行できるというハンドラを書くの開発時間の規則に従ってHandlerAdapter、。

  • ビューリゾルバ

ViewResolver:ページを介してユーザに提示ビューをレンダリングするためのビュー名、特定のページのアドレスが生成されたビュー・ビュー・オブジェクトの論理ビューに応じて物理名に解決要求結果の表示への応答を生成するための責任。

  • ビュー

View:のようなJSP、FreeMarkerの、PDFを:SpringMvcビュービューフレームワークがあって、サポートの多くの種類を提供します。戻るラベルまたはデータページページテンプレート解析モデルにより、大幅にページに、ページ事業開発の具体的なニーズに応じました。

第三に、春のフレームワーク構成の統合

図1に示すように、スプリングMVC構成

<!-- 扫描文件 -->
<context:component-scan base-package="com.spring.mvc.controller" />
<!-- MVC默认的注解映射的方式 -->
<mvc:annotation-driven />
<mvc:default-servlet-handler/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/page/" />
    <property name="suffix" value=".jsp" />
</bean>

2子web.xmlの設定

<servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

図3に示すように、テストインタフェース

@Controller
public class HelloController {
    @RequestMapping("/getInfo")
    public @ResponseBody String getInfo (String name){
        return name ;
    }
}

4、一般的な注釈

  • @Controller

ハンドラ・クラスは、コントローラと関連付け要求方法、そのようなコントローラとの間の関係をマッピングするために使用される、他の注釈(@ GetMapping、@ PostMapping、@ PutMapping、@ DeleteMapping)@RequestMappingまたは、コントローラを開発しているマーカーでありますこれは、アクセスを要求することができます。

  • @RequestMapping

要求アドレスのマッピング・アノテーションを処理する、またはクラスのメソッドに作用することができます。クラスの場合、クラスを表現するための要求に応じて、すべてのメソッドは、親クラスパスとしてアドレスにマークされています。

  • @requestParam

制御層SpringMvc取得パラメータ、3つの一般的なパラメータのメインフレームワーク:ブール設定により必要はdefaultValue表現セットのデフォルト値は、パラメータに渡さなければならないものであり、値は、パラメータ渡された名前の値を表します。

  • @RequestBody

データ要求が受信された文字列の後端にJSON搬送体は、全く要求GETメソッドは、そのよう@RequestBodyを使用してデータを受信した場合、GETメソッドは、データを送信するために使用することができないこと、POSTメソッドで送信する必要がありません。

  • @ResponseBody

JSONは、XMLのようたとえば、指定されたデータフォーマットを使用する場合、この方法は、所望のデータが表示ページの試みを返されていない場合、データコンバータ構成によって指定されたフォーマットに応じて、注釈のためのオブジェクトを返し、しかし。

  • @Autowired

タイプ(byType)によって従属オブジェクトは、それがヌル値が許可されている場合の従属オブジェクトが存在しなければならない必要があり、デフォルトでは、組み立てられ、それはfalseに属性セットを必要とすることができます。あなたが組み立てられている名前(BYNAME)に従って使用したい場合は、@Qualifier注釈と組み合わせて使用​​することができます。

  • @Resource

パッケージjavax.annotation.Resourceをインポートする必要に応じてBYNAME自動注入。@Resourceは二つの重要な属性があります。名前とタイプを、そして春はBeanの名前に注釈name属性の解決さを@Resourceなり、type属性は、Beanのタイプに解決されます。

  • @PathVariable

URLテンプレート変数パラメータの要求は、パラメータとして処理方法、すなわち抽出URIテンプレート変数にマッピングされます。

第四に、共通パラメータマッピング

図1に示すように、一般的なマッピング

@RequestMapping("/getSum")
public Integer getSum (int a,int b){
    return a+b ;
}

テスト:

http://localhost:6003/getSum?a=1&b=2

パラメータは、メソッド名を渡すとパラメータは同じまま。

2、パラメータ名を指定します

@RequestMapping("/getInfo")
public String getInfo (@RequestParam("name") String var1,
                       @RequestParam("say") String var2){
    return var1+":"+var2 ;
}

テスト:

http://localhost:6003/getInfo?name=cica&say=hello

質量参加と@RequestParam名が対応するようにパラメータ名を指定しました。

3、配列パラメータ

@GetMapping("/getArray")
public String getArray (String[] ids){
    return ids[0]+"-"+ids[1] ;
}

テスト:

http://localhost:6003/getArray?ids=2&ids=3

およびアレイ型送信フォーマットパラメータを分析します。

4、地図のパラメータ

@RequestMapping("/getMap")
public String getMap (@RequestParam Map<String,String> paramMap){
    return paramMap.get("name") ;
}

テスト:

http://localhost:6003/getCityEntity?province=浙江&name=杭州

このようにパラメータがポストCityEntityエンティティオブジェクトが渡さ。

5、包装パラメータ

@PostMapping("/getCityEntity")
public CityEntity getCityEntity (CityEntity cityEntity){
    return cityEntity ;
}

テスト:

http://localhost:6003/getCityEntity?province=浙江&name=杭州

このようにパラメータがポストCityEntityエンティティオブジェクトが渡さ。

6、残りのスタイルパラメータ

@GetMapping("/getId/{id}")
public String getId (@PathVariable("id") Integer id){
    return "id="+id ;
}

テスト:

http://localhost:6003/getId/1

RESTfulなスタイルのパラメータマッピング。

第五に、ソースコードのアドレス

GitHub·地址
https://github.com/cicadasmile/spring-mvc-parent
GitEE·地址
https://gitee.com/cicadasmile/spring-mvc-parent

おすすめ

転載: www.cnblogs.com/cicada-smile/p/11993119.html