Spring実戦Web 2:Spring MVCの高度な技術

2811 ワード

DispatcherServiceletの構成のカスタマイズ
JavaによるSpring MVCの構成は、A b s t r a c t n o n t i o n t i o n t i o n t i o n t i o n C o f i g DispatcherServertInitializerによって実現できる.ここでは、getRootConfigClasses、getServertConfigClasses、getServertMappingsの3つの方法に加えて、書き換える方法がたくさんある.1.c u s t o m i z e Registration DispatcherServiceletがサーブレットコンテナに登録すると、c u s t o m i z e Registrationメソッドが呼び出され、登録後に得るサーブレットRegistrationが呼び出される.Dynamicオブジェクトが渡され、DispatcherServeretをカスタマイズできます.setLoadOnStartup、setMultipartConfig、setInitParameterなどです.
Filter、サーブレット、Listenerの追加
A b s t r a c t A n o t i o n t i o n C o n t i o n t i o n C o f i g DispatcherServereInitializerを継承すると、DispatcherSerServiceとContextLoaderListenerが作成されます.他のコンポーネントを登録するには、WebApplicationInitializerインタフェースを実装するだけです.
Multipart形式データ
Multipart解析器の構成
Spring 3.1からmultipart解析器を2つ内蔵:1.CommonsMultipartResolver,Jakarta Commons FileUploadを使用してMultipart要求2を解析する.StandardServiceletMultipartResolver、Multipart 3.0のサポートに依存
両者の間には、StandardServiceletMultipartResolverが好ましい.解析器をbeanと宣言すると有効になります.
また、Web上で必要な構成を指定する必要があります.xmlまたはJavaコンフィギュレーションクラスで指定するには、multipartの詳細をDispatcherServiceコンフィギュレーションの一部とする必要があります.
Multipartデータの処理
最も一般的な方法は、あるコントローラメソッドパラメータで@RequestPart注記受信を使用して、このパラメータを以下の方法で構成できます:1.RequestPart(“file”) byte[] file 2. @RequestPart(“file”) MultipartFile file ( org.springframework.web.multipart.MultipartFile ) 3. @RequestPart(「file」)Part file(javax.servlet.http.Part)では、MultipartResolver beanを構成する必要はありません.
例外処理
Springは、例外を応答に変換する方法をいくつか提供します:1.特定のSpring異常は、指定するHTTP状態に自動的にマッピングされる.例外に@ResponseStatus注記を追加できます
  • @ExceptionHandler注記をメソッドにコミットし、メソッドを使用して現在のコントローラの例外
  • を処理します.
  • コントローラ追加通常、一括処理グローバルの異常
  • リダイレクト要求にまたがるデータの転送return "redirect: /spittle/{username}?id=12"により要求をリダイレクトすることができ、サーブレットシステムでリダイレクトを要求すると元の要求が終了し、新しいGET要求が開始され、元の要求のモデルデータも消滅する.
  • URLテンプレートを介してurlにデータを渡す、
  • .
    ...
    model.addAttribute("username","Tom"); //        
    model.addAttribute("age",23); //        
    return "redirect:/spittle/{username}";

    上のコードが最終的に得たurl:/spittle/com?age=23これは簡単で直接的な方法で、欠点も明らかで、複雑なオブジェクトを伝えることができません.
  • flashプロパティ
  • を使用
    原理:リダイレクトが発生する前に、データをセッションに配置し、リダイレクトが完了した後、セッションから取り出し、セッション内のデータをクリーンアップします.Springの実装は少し異なり、RedirectAttributesオブジェクトを使用する必要があります.セッション内のflashプロパティは、次のリクエストが消えるまでデータを保持します.
    リダイレクトが実行される前に、RedirectAttributes#addFlashAttributeで追加されたすべてのプロパティがセッションにコピーされます.リダイレクトすると、セッションに存在するflashプロパティが取り出され、セッションからモデルに移行します.リダイレクトを処理する方法でモデルからSpittleオブジェクトにアクセスできます.