세션 2. 스프링 웹 개발 기초

김슬기·2022년 9월 23일
0
  • 정적 컨텐츠 (static contents
    • 파일을 그대로 웹 브라우저에 전달해주는것
    • 스프링 부트는 자동으로 정적 컨텐츠를 제공해줌
    • 파일을 넣고, localhost:8080/ 파일이름 을 하면 열린다.
    • 하지만 그 파일을 프로그래밍을 할 순없다.
  • MVC와 템플릿 엔진

    • 서버에서 변형해서 전달하는 방식

    • MVC: model, controll, view

    • view = 화면에 관련된 것들

    • controller, model = 비지니스적이고 서버관련된 것들을 넘겨주는 것들

    • controller

      package hello.hellospring.controller;
      
      import org.springframework.stereotype.Controller;
      import org .springframework.ui.Model;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      
      @Controller
      public class hellocontroller {
      
          @GetMapping("hello") // url에서 /hello가 들어오면 아래 코드 실행
          public  String hello(Model model){ //MVC모델의 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-templates";
          }
      }
      
    • templates

      <!DOCTYPE HTML>
      <html xmlns:th="http://www.thymeleaf.org">
      <head>
          <title>
              hello
          </title>
          <meta http-equiv="Content-Type" content="text/html; charset= UTF-8">
      </head>
      <body>
      <p th:text="'hello. ' + ${name}"> hello. empty</p>
      </body>
      </html>
  • API

//컨트롤러 안에 작성
@GetMapping("hello-string")
@ResponseBody // response body 내에 직접 넣어주겠다.
public  String hellostring(@RequestParam("name") String name){ //API
    return "hello" + name; //그냥 깡으로 문자만 날라감
}

@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){ //json 객체 반환
    Hello hello = new Hello();
    hello.setName(name);
    return hello;
}

static class Hello{ //Hello 라는 객체 만들기
    private String name;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;

    }

}

  • 반환값은 객체면 json, 문자면 그냥 문자로 주게됨.
    • 반환값에 따라 동작하는 메세지컨버터가 다름
    • 뷰컨버터의 역할을 메세지 컨버터가 그냥 해줌.
    • 객체 반환의 기본 포맷은 json 이지만 xml로 바꿀순있다. 하지만 json만 거의사용
profile
낭만그리고김슬기

0개의 댓글