この記事の出所: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)、アダプタ制御部の前端にプロセッサ戻るとModelAndView
、ModelAndView
あるspringmvc
含む、基礎となるオブジェクトのフレームModel
とview
、
(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