@RestControllerと@Controller



Restcontroller Vs Controller



@RestControllerと@Controller

コントローラがページを返す



単独で使用@コントローラ追加しないでください@ResponseBody次に、状況を考慮して一般的に使用されるものに戻ります。これは、前端と後端が分離されていない場合に対応する、比較的従来のSpringMVCアプリケーションです。

@RestControllerはJSONまたはXMLフォームデータを返します



だが@RestControllerオブジェクトのオブジェクトデータがXMLまたはJSONHTTP応答(応答)の形式で直接書き込まれることを返します。このケースはRESTful Webサービスに属しており、現在、最も一般的なケース(フロントエンドとリアエンドが分離されています)の日々の開発に連絡しています。

@Controller + @ResponseBodyはJSONまたはXMLフォームデータを返します

Spring4より前にRESTfulWebサービスを開発する必要がある場合は、次を使用する必要があります。@コントローラ組み合わせ@ResponseBody注、その@コントローラ+@ResponseBody=@RestController(4つの新しく追加された注釈の後の春)。



@ResponseBody役割はコメントすることですコントローラオブジェクトが適切なコンバーターによって変換された指定の形式に戻った後、本文のHTTP応答(Response)オブジェクトを書き込むために、通常、JSONまたはXMLを使用してデータを返し、JSONにさらにデータを返します。

例1:@Controllerがページを返す

ページのバックエンドに直接戻る必要がある場合、SpringはThymeleafテンプレートエンジンを推奨しました。 SpringMVCで@コントローラメソッドはテンプレート名に直接戻ることができ、次のThymeleafテンプレートエンジンは、式テンプレートがSpring式言語(Spring EL)をサポートするように自動的にレンダリングします。 Thymeleafテンプレートエンジンを使用する必要がある場合は、add-dependentに注意してください!またはエラーになります。

Gradle:

compile 'org.springframework.boot:spring-boot-starter-thymeleaf'

Maven:

org.springframework.boot spring-boot-starter-thymeleaf

HelloController.java

@Controller public class HelloController { @GetMapping('/hello') public String greeting(@RequestParam(name = 'name', required = false, defaultValue = 'World') String name, Model model) { model.addAttribute('name', name) return 'hello' } }

src / main / resources / templates / hello.html

デフォルトのディレクトリをテンプレートディレクトリの下のリソースに移動して検索します。リソース/テンプレートディレクトリのページをお勧めします

Getting Started: Serving Web Content

訪問:http://ローカルホスト:? 8999 / hello name = team-c、次のコンテンツが表示されます

Hello, team-c!

テンプレートディレクトリフォルダ内のページファイルにアクセスする場合は、このような内容が書き込まれたときにページに戻ります。

src / main / resources / templates / hello / hello.html

return 'hello/hello'

例2:@ Controller + @ ResponseBodyJSON形式のデータ

SpringBootのデフォルトの統合ジャクソン。これに対する要求は、関連する依存関係を追加する必要はありません。

src / main / java / com / example / demo / controller / Person.java

public class Person { private String name private Integer age ...... omit getter / setter, there is no method of ginseng and ginseng construtor }

src / main / java / com / example / demo / controller / HelloController.java

@Controller public class HelloController { @PostMapping('/hello') @ResponseBody public Person greeting(@RequestBody Person person) { return person } }

http:// localhost:8080 / hello、bodyが次のパラメーターに含まれている場合、バックエンドはjson形式の対象となる人物を返します。

{ 'name': 'teamc', 'age': 1 }

例3:@RestControllerJSON形式のデータ

する必要があるだけHelloController次のフォームをお読みください。

@RestController public class HelloController { @PostMapping('/hello') public Person greeting(@RequestBody Person person) { return person } }