第2節.Spring Web開発基盤

10672 ワード

静的コンテンツ:サーバからWebにファイルをダウンロードします.
MVCとテンプレートエンジン(jsp...など...htmlを動的に置き換えることでダウングレード)
←このモードで開発が多い
静的コンテンツとは異なり、サーバ上での変換と置換
API-jsonという名前のパケットにデータを転送します.view, react ...
サーバ間の通信はapi方式を採用している.

静的コンテンツ


スプリングは静的コンテンツ機能を起動します.
https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html

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


mvc = model, view, controller

  • controller
    モデル関連セクション:ビジネス関連/内部ロジックの処理に焦点を当てます.
  • @Controller
    public class HelloController {
    
        @GetMapping("hello-mvc")
    //    name = parameter이기 때문에 값을 넘겨줘야 작동한다, html 마지막에 ?name=value라고 하면 됨.
        public String helloMvc(@RequestParam("name") String name, Model model) {
            model.addAttribute("name", name);
            return "hello-template";
        }
    }

  • view
    全力でスクリーンを描く
  • <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hello-template</title>
    </head>
    <body>
    <p th:text="안녕하세요.  + ${name}" >hello! empty</p>
    </body>
    </html>

    変換されるので、ブラウザはこのように表示されます.
    <body>
    <p>안녕하세요. spring</p>
    </body>

    API


    エンジンレンダリングでhtmlで降格するか、apiでデータ自体を降格するかに重点を置きます.apiは後者です.
    コントローラで解決し、個別のビュー部分はありません.
    @GetMapping("hello-string")
    // http에서 헤더부분과 바디부부이 있다. http의 바디부분에 이 네임을 직접 넣어주겠다는 뜻.
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {
        return "hello " + name; //name이 spring이면 hello spring
    }
    サーバーhtmlの表示
    <body> hello spring </body>
    データ収集時の特化
    @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;
            }
        }

    サーバhtmlをチェックすると、-jsonが返されます.デフォルトではJsonを返します.
    <pre style="word-wrap: break-word; white-space: pre-wrap;">{"name":"spring"}</pre>
  • クライアントHTTP受信ヘッダとサーバ上のコントローラ返却タイプ情報を組み合わせて「HttpMessageConverter」を選択します.
    今ではほとんどjsonしか使われていません.