27番 例外処理(1)-実習
ExceptionController.java
メソッドの前に@ExceptionHandlerを付けてtry-catchのcatchのように使用可能。ただし、同じクラス内で使用。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
28番 例外処理(2)-理論
@ExceptionHandlerと@ControllerAdvice
例外処理のためのメソッドを作成し、@ExceptionHandlerを貼り付ける。
@ControllerAdviceで全域例外処理クラスを作成可能(パッケージ指定可能)
例外処理メソッドが重複の場合、コントローラ内の例外処理メソッドが優先。
@ResonseStatus
応答メッセージのステータスコードを変更する際に使用
例外処理メソッド
例外処理をすると200(成功)が出る。-->405に変更
ExceptionResolver
ばねの例外処理基本戦略
handlerExceptionResolver
- ExceptionHandlerExceptionResolver
- ResponseStatusExceptionResolver
- 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番はもうおわったことです。