LoginSignup
0
0

More than 1 year has passed since last update.

Mr.Nam 先生の講義要約 Chapter 2, 27-35

Posted at

27番 例外処理(1)-実習

ExceptionController.java
メソッドの前に@ExceptionHandlerを付けてtry-catchのcatchのように使用可能。ただし、同じクラス内で使用。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

28番 例外処理(2)-理論
@ExceptionHandler@ControllerAdvice
例外処理のためのメソッドを作成し、@ExceptionHandlerを貼り付ける。

@ControllerAdviceで全域例外処理クラスを作成可能(パッケージ指定可能)
例外処理メソッドが重複の場合、コントローラ内の例外処理メソッドが優先。

@ResonseStatus
応答メッセージのステータスコードを変更する際に使用

例外処理メソッド
例外処理をすると200(成功)が出る。-->405に変更

ExceptionResolver
ばねの例外処理基本戦略
handlerExceptionResolver

  1. ExceptionHandlerExceptionResolver
  2. ResponseStatusExceptionResolver
  3. DefaultHandlerExceptionResolver

スプリングでの例外処理
コントローラメソッド内でtry-catchとして処理
コントローラに@ExceptionHandlerメソッドが処理
@ControllerAdviceクラスの@ExceptionHandlerメソッドが処理
例外種類別にビュー指定-SimpleMappingExceptionResolver
応答状態コード別にビュー指定--web.xml

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

29番 DispatcherServletパヘチギ
SpringMVCの要請処理過程
HandlerMapping, HandlerAdapter
HandlerMappingはMapの形で(key=URL, value=メソッド)保存しておいて、
リクエスト("ch2/register/add)が来たらDispatcherServletが受け取り
HandlerMappingからURLに合ったメソッドを探し、メソッド情報をもらって
そのメソッドに合ったHandlerAdapterを探す。
そのHandlerAdapterと接続されたタブレットやコントローラで接続。
HandlerAdapterにより緩めの接続==>変更に有利

DispatcherServletのソース分析
DispatcherServlet.classはspring-webmvc-5.0.7.RELEASE.jarに含まれる。
ソースファイルの位置-org/springframework/web/servlet/DispatcherServlet.java
基本戦略-org/springframework/web/servlet/DispatcherServlet.properties
(基本戦略:基本的に使用するクラス)

主要メソッド
initStrategies()-基本戦略を初期化
doService()-doDispatch()呼び出し
doDispatch()-実際のリクエストを処理
processDispatchResult()-例外が発生しているかを確認、発生していなければrender()呼び出し
render()-応答結果を生成して送信

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

30番 データの変換と検証(1)
PropertyEditor

双方向タイプ変換(String->タイプ·タイプ->String)
特定タイプや名前のフィールドに適用可能
デフォルトPropertyEditor-スプリングが基本的に提供。
カスタムPropertyEditor-ユーザーが直接実装。 PropertyEditorSupportを継承すると便利。
すべてのコントローラ内での変換-WebBindingInitializerを実装し、登録
特定コントローラ内での変換-コントローラに@InitBinderが付いたメソッドを作成

Converter, ConversionService
Converter

単方向タイプ変換(タイプA→タイプB)、stateless(iv使用X)。
PropertyEditor(両方向)の短所を改善(stateful(iv使用)→stateless)
ConversionService()

タイプ変換サービスを提供。 複数のConverterを登録可能。
WebDataBinderにDefaultFormattingConversionServiceが基本登録
すべてのコントローラ内での変換-ConfigurableWebBindingInitializerを設定して使用
特定コントローラ内での変換-コントローラに@InitBinderが付いたメソッドを作成。
Formatter
双方向タイプ変換(String->タイプ·タイプ->String)
バインディングするフィールドに適用-@NumberFormat@DateTimeFormat

PropertyEditor:双方向
Converter:単方向
Formatter:双方向、@NumberFormat@DateTimeFormat

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

31番 データの変換と検証(2)
Validator
オブジェクトを検証するためのインタフェース。 オブジェクト検証器(validator)の実装に使用

Validatorを利用した検証-手動
コントローラメソッド->検証という関心事に分離
Validatorを利用した検証-自動
@Valid

グローバルValidator
一つのValidatorで複数のオブジェクトを検証する際、グローバルValidatorとして登録

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

32-35番はもうおわったことです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0