[Spring] 웹개발 기초

이준영·2022년 9월 21일
0

스프링-입문

목록 보기
4/15

정적 컨텐츠

파일 그대로 렌더링 --> static
서버 실행 후 localhost://8080/index.html 로 접근가능

MVC

Model / View / Controller 의 앞글자를 딴 약자로 전에는 view와 controller가 합쳐져있었다고한다. 이 방식이 비효율적이라 나눴고 그게 바로 MVC!!

  • View : 화면을 그리는데 집중
  • Controller : 내부 처리하는데 집중(비즈니스 로직)

Django의 MVT 패턴과 이름만 다를뿐 로직이 똑같아서 이해하는데 어려움은 없었다

Spring에서 Controller는 Django의 url+view와 같은 역할을 한다.
1. @GetMapping()으로 url 이름을 설정해준다
2. 전달할 parameter를 지정해준다. @RequestParam은 url에서 ?를 통해 parameter 값을 넣어주어야 한다.
3. return 값으로는 resource/templatesd 밑에 있는 mapping할 파일 이름을 넣어준다.

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name", required = false) String name, Model model) {
        model.addAttribute("name",name);
        return "hello-template";
    }
    
}

API

페이지를 렌더링해서 해주기 vs API 방식으로 데이터를 전달하기

@ResponseBody : 데이터를 그대로 보내주는 애노테이션
-> @ResponseBody가 안붙어있으면 template(viewResolve)에 던져준다
-> @ResponseBody가 붙어있으면 HTTP Response의 body 부분에 return값(데이터 그 자체)을 던져준다.

스프링은 객체를 넘길 시 default로 JSON 포맷을 넘겨준다.

@Controller
public class HelloController {

	// 1. 데이터를 넘기면 데이터 그대로 전달(여기선 string)
    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {
        return name;
    }

	// 2. 객체를 넘기면 JSON 포맷으로 전달
    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

}

당연한 얘기지만 API는 데이터를 넘기기 때문에 resource/templates에 mapping할 파일이 있을 필요가 없다.

profile
화이팅!

0개의 댓글