JAVA Spring boot 공부중
서버에서 클라이언트에게 서빙해주는 방식 (정적, MVC, API)
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "spring!!!");
return "hello";
}
mvc 방식으로 템플릿 엔지으로 렌더링이 된 html을 클라이언트한테 주는 방식
@RequestParam("name")
위의 어노테이션 코드를 사용하면 클라이언트로부터 쿼리값으로 값을 넘겨받을 수 있음.
과정 : 쿼리값을 넣은 주소로 내장 톰캣서버를 거쳐서 스프링으로 들어감. 스프링 내부에서 controller를 지나 해당 메소드랑 연결시킴. 그럼 viewResolver를 거쳐서 뷰를 찾아주고 템플릿을 찾아주는 기능을 거치고 thymeleaf 템플릿 엔진 처리 후 html변환하여 클라이언트에게 서빙해줌.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}

@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello" + name;
}
html로 내려주는 방식이 아니래 냅다 데이터만 내려주는 방식

@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가 붙어있으면
HTTP의 BODY에 문자내용을 직접 반환함. viewResolver대신 HttpMEssageConverter가 동작.
기본 문자처리: StringConverter(StringHttpMessageConverter)가 동작
기본 객체 처리 : JsonConverter(MappingJackson2HttpMessageConverter)가 작동하여 클라이언트에게 서빙.
위의 코드에서는 멤버변수 접근을 private으로 해서 직접적인 접근을 막고 메소드를 통한 접근만을 public으로 해놓은걸 사용했다.