@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 } }