

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

입력 방식 설명
1. /hello-mvc : hello-mvc에 매핑되는 정보를 얻길 바람
2. ?name=spring!! : @RequestParam(value = "name" 에서 직접 파라메터를 요구하고 있으므로 name에 대한 값을 "spring!!" 이라는 문자열 형식으로 입력해준 것

작동 순서
1. client가 (웹주소)/hello-mvc를 웹서버에 요청
2. 내장 톰켓 서버는 helloController에 이를 전달
3. helloController는 "hello-mvc"에 매핑된 메서드를 실행함
4. 이때 return은 "hello-template"이므로 이와 같은 파일 이름을 teplates 폴더에서 찾음
5. model(name:spring)으로 매핑된 것을 전달
6. 지정한 html, 매핑된 모델을 적용하여 viewResolver가 변환 후 웹브라우저에 전송
@GetMapping("hello-string")
@ResponseBody // http에는 헤더와 바디가 존재, 데이터를 직접 바디에 넣어주겠다라는 소리이다.
public String helloString(@RequestParam("name") String name) {
return "hello " + name; // hellow spring으로 바뀐다. 내가 name으로 설정한 것으로 바로간다는뜻
}


아무런 html이 존재하지 않고 return된 데이터가 바로 웹브라우저에 전송된 모습이다.
@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() { // get, set 단축키가 존재하니까 잘알아보셈 > 그냥 value에 접근하기 위해서는 함수를 쓰게 만드는것
return name;
}
public void setName(String name) {
this.name = name;
}
간단하게 코드를 설명하면
Hello 객체의 name을 client로부터 입력받고, controller는 이를 저장한 객체를 반환한다.


1. hello-api 요청이 왔다는것을 스프링에 넘김
2. hello-api getmapping이 되었으니 메서드 실행을 하려고 함
3. @responseBody는 그냥 바로 데이터를 넘기라는 뜻
* veiwresolver가 아닌 httpmessageConverter가 동작.
4. 근데 객체(hello)가 왔다? 문제 없이 객체가 반환된다.
5. 반환된 형태가 문자라면 StringConverter가 받지만, 객체라면 JsonConverter가 받는다.
6. hello의 name:spring 매핑 정보를 웹브라우저에 전달함.
: 블로그에 정리 하지 않을 때는 배우는 과정만 거치고, 배운 것을 밖으로 꺼내는 과정이 없었으므로, 시간이 지나면 잊을 때가 많았는데, 블로그에 정리하면서 내가 생각하기에 더 중요한 내용, 전체적인 흐름과 같은 것들을 다시한번 복습하는 과정이 되는 것 같아서 모각소 프로그램이 끝나도, 배운내용을 블로그에 정리하는 습관을 들여볼 예정이다. 또 혼자 공부하는 것은 자신과 타협하여 공부 시간을 줄인다거나, 미루는 것을 할 수도 있었지만, 팀원들과 함께 시간을 정하고 하니 확실하게 공부한 것 같아서 뿌듯했다.
자료출처 - 김영한 강사님의 스프링 입문 강의
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8