[SPRING]スプリング入門コース-スプリングWeb開発基礎


金ヨンハン講師の春の入門授業を整理したものだ.

静的コンテンツ


静的コンテンツはhtmlをそのままサーバに渡すことを意味する.

絵のようにhello-statichtmlにアクセスするには、まずコントローラでhello-staticを検索し、ない場合はリソースのstatic/hello-staticを検索します.htmlを返します.

MVCとテンプレートエンジン

  • モデル:データおよびビジネスロジック管理
  • ビュー:レイアウトとスクリーン処理
  • コントローラ:コマンドをモデルおよびビュー
  • にルーティングする
    Controller
    @Controller
    public class HelloController {
    
     @GetMapping("hello-mvc")
     public String helloMvc(@RequestParam("name") String name, Model model) {
     	model.addAttribute("name", name);
     	return "hello-template";
     }
    }
    View
    < resources/template/hello-template.html >
    <html xmlns:th="http://www.thymeleaf.org">
    <body>
    <p th:text="'hello ' + ${name}">hello! empty</p>
    </body>
    </html>

    上記の静的な内容と同様に、hello-mvcを検索すると、コントローラにhello-mvcがあるため、モデルにデータを入れ、hello-mtemplateします.htmlを返します.

    API


    @ResponseBody文字を返します
    @Controller
    public class HelloController {
     @GetMapping("hello-string")
     @ResponseBody
     public String helloString(@RequestParam("name") String name) {
     	return "hello " + name;
     }
    }
  • @ResponseBodyを使用する場合は、ViewResolverは使用されません.
  • の代わりに、下図のようにHTTPのBODYに文字内容を直接返します.
  • @ResponseBodyオブジェクトを返します
    @Controller
    public class HelloController {
     @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;
     	}
     }
    }
  • @ResponseBodyを使用して、オブジェクトに戻るとJSONに変換されます
  • @ResponseBodyの原理を使う

    @ResponseBodyを貼り付けると、ViewResolverではなくHTTPのBODYに直接文字内容が戻され、HttpMessageConverterによって操作されます.
  • デフォルト文字処理:StringHttpMessageConverter
  • デフォルトオブジェクト処理:MappingJackson 2 HttpMessageConverter
  • バイト処理など他の複数のHttpMessageConverterがデフォルトで登録されています.