정적 컨텐츠 : 파일을 그대로 웹 브라우저에 출력
MVC & 템플릿 엔진 : 서버에서 HTML을 동적으로 처리하여 출력
API : JSON 데이터 포맷으로 클라이언트에게 전달 (데이터 전송 시)
정적 컨텐츠 로직
1. 웹 브라우저에서 요청 (../hello-static.html)
2. 톰켓 버서가 요청을 받음
3. 스프링 컨테이너 쪽에서 관련 컨트롤러 찾음 (hello-static 컨트롤러 찾음)
4. 컨트롤러가 없는 경우 정적 파일을 찾음 (static/hello-static.html 찾음)
MVC & 템플릿 엔진
MVC : Model, View, Controller
View : 화면을 그리는 역할
Model, Controller : 비즈니스 로직, 내부적 처리 역할
@RequestParam() : get 방식을 통해서 값을 받아옴
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value = "name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
위와 같이 코드를 작성했을 때 웹 브라우저에서는
http://localhost:8080/hello-mvc?name=spring!!!!
?name을 통해 값을 전달할 수 있고, 전달된 값은 변수 String name에 저장됨
동적일 때는 viewResolver가 렌더링하여 변환 후 html을 반환
API
view 없이 데이터가 그대로 내려간다.
- 단순 문자열을 넘김
@GetMapping("hello-string")
@ResponseBody // http의 body 부분에 return 데이터를 직접 넣어주겠다
public String helloString(@RequestParam("name") String name) {
return "Hello" + name;
}
- 데이터를 넘김 (Json 방식)
@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;
}
}
json : key : value 방식의 단순한 데이터 방식
스프링에서 객체를 반환하고 responseBody를 사용하면 json을 기본으로 반환함
@responseBody가 없으면 viewResolver로 전달
@responseBody가 있으면 http응답에 바로 응답 (HttpMessageConverter)
-> 문자열은 그대로, 객체는 json 방식으로 데이터를 보냄
[Spring] 프로젝트 생성, 동적 페이지 구현, 빌드, 실행 (0) | 2022.11.03 |
---|