[spring]Web開発の3つの方式(静的コンテンツ、MVC、API)
9789 ワード
この記事は、キム・ヨンハンの「コードで学ぶSpringBoot、WebMVC、DBアクセス技術」コースの一部を学び、まとめたものだ.
3つのスプリングを使用したWeb動作
スプリングを使用してWebページをブラウザに送信する方法は、大きく3つあります.
1.静的コンテンツ方式
2.MVCとテンプレートエンジンの使用
3.API方式
1.静的コンテンツ方式
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
1-1. 静的コンテンツ駆動の動作原理
画像ソース:金英漢-学習コードのSpringBoot、Web MVC、DBアクセス技術コース
静的コンテンツ方式は、ファイルをブラウザに送信し、何の処理も行わない方式である.公式文書を見ると、どのファイルを転送するかがわかります.index.html
を介してcontroller
viewResolver
に移動すると、画面に対応するファイルが戻り値で検索されます.Spring BootテンプレートエンジンはviewName
マッピングをサポートするため、ファイル名が一致するとすぐにブラウザに渡されます.
以下のspring公式ファイルの抜粋内容を参照してください.
7.1.6. Welcome Page
Spring Boot supports both static and templated welcome pages. It first looks for an index.html file in the configured static content locations. If one is not found, it then looks for an indext template. If either is found, it is automatically used as the welcome page of the application.
ソース:https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page
2.MVCとテンプレートエンジンの使用
MVCとは?Model, View, Controller @GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
コントローラで使用される主な方法のコメント@GetMapping
:Controllerでurlを照合します.@RequestParam()
:パラメータの値を取得するために使用されます.public String helloMvc(@RequestParam("name") String name)
前に示したように、@RequestParam()
、Controller
のパラメータがあれば、リクエストurlの後に?name=コントローラは、文字列がパラメータとしてのみマッピングされます.
2-1. MVC方式の動作原理
画像ソース:金英漢-学習コードのSpringBoot、Web MVC、DBアクセス技術コース
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
public String helloMvc(@RequestParam("name") String name)
Controller
:urlリクエストを受信すると、内蔵のTomcatサーバは対応するController
を見つけます.Model
:Controller urlと一致するメソッドを検索して実行します.必要なデータを含むmodel
をreturnを使用して渡します.View
:viewResolverテンプレートエンジンを使用して、戻り名に一致するView
ファイルを検索し、ブラウザに表示します.3.API方式
静的コンテンツ方式でなければ、2種類(MVC/API)を覚えるだけです.
MVCに個別のビュー領域が存在し、htmlファイルを操作してブラウザにデータを送信する方式である場合、APIはブラウザにのみデータを送信し、画面の作成はブラウザが担当する方式である.
@GetMapping("hello-mvc")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello" + name;
}
APIキーコメント@ResponseBody
:htmlではなくhttpの通信プロトコルがヘッダとボリュームに分かれており、これらのコンテンツを直接ボリュームに置くことを意味します.返されたデータは、クライアントに直接渡されます.Viewは存在しません.データはそのまま転送されます.オブジェクトを送信する必要がある場合は、どうすればいいですか?
api方式では、戻りタイプでオブジェクトを送信する場合、デフォルトでは
json
オブジェクトがブラウザに送信されます.jsonって何?key:value構造からなる文字列データフォーマット.@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3-1. API操作原理
APIは文字コンテンツを直接HTTPのbody領域に返す.別途画面を作成していないため、
viewResolver
の代わりにhttpMessageConverter
が操作する.この機能はスプリングガイドによって自動的に提供されます.戻りタイプが文字列の場合、httpMessageConverter
オブジェクトが使用され、戻りタイプがオブジェクトの場合、StringHttpMessageConverter
が使用されます.MappingJackson2HttpMessageConverter
は、スプリングがオブジェクトをjackson
に変換するために使用されるデバッガライブラリである.クライアントのHTTP受信ヘッダに特定の戻りタイプが指定されている場合、スプリングはコントローラの戻りタイプ情報を参照して自動的に適切なタイプを決定する.次に、対応するタイプの
json
を選択し、変換後にデータを転送する.Reference
この問題について([spring]Web開発の3つの方式(静的コンテンツ、MVC、API)), 我々は、より多くの情報をここで見つけました https://velog.io/@woply/스프링-웹-개발의-3가지-방식テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol