정적 웹페이지 & 동적 웹페이지
정적 웹페이지 : 웹 서버에 저장된 파일을 변경 없이 그대로 웹 브라우저에 전달하는 웹 페이지
ex) 자기소개페이지처럼 페이지 안의 내용이 바뀔 일이 없는 웹페이지를 의미
동적 웹페이지 : 서버에서 프로그래밍을 통해 HTML 파일을 동적으로 생성하여 웹 브라우저에 전달하는 웹 페이지
ex) 게시판처럼 항상 같은 내용이 뜨는 것이 아닌 웹페이지를 의미
MVC & 템플릿 엔진
템플릿 엔진 : 서버에서 프로그래밍해서 html을 동적으로 바꾸는 것
MVC(Model, View, Controller) : 동적인 웹페이지를 만들 때 주로 사용
API(Application Programming Interface)
프로그램들이 서로 소통할 수 있게 도와주는 것
API
API란 무엇일까?소프트웨어 간의 상호작용을 위한 인터페이스를 제공한다 즉 프로그램들이 서로 소통할 수 있게 도와주는 것이다 API가 가져가야 할 내용(Get 요청) hello.insta.com/post/detail?id=60122
shyeeon.tistory.com
- 정적콘텐츠



localhost:8080/hello-static.html -> 내장 톰캣서버가 요청받음 -> 스프링한테 넘김
스프링: controller 쪽에서 hello-static이 있는지 먼저 확인 -> 없음 -> rosources안에 있는 hello-static을 찾음 -> 있음 -> 반환
- MVC
controller - view (분리해서 사용)
view : 화면을 그리는데 집중
controller: 비즈니스 로직, 내부적인걸 처리
model: 화면에서 필요한 것들을 담아서 화면 쪽에 전달


템플릿 엔진 사용하여 뷰 템플릿을 렌더링 한 결과를 반환하므로 브라우저에서 완성된 HTML 파일이 보임

localhost:8080/hello-mvc -> 톰캣이 스프링한테 넘김 -> helloContoller에 있음
viewResolver(뷰를 찾아주고 템플릿을 연결시켜주는 것)가 return의 스트링 네임과 똑같은 애를 찾아서 thymeleaf 템플릿 엔진에서
처리해 달라고 넘김 -> 템플릿 엔진이 렌더링 해서 변환을 한 HTML을 웹브라우저에 반환
- API (@ResponseBody 사용한 API)
- ResponseBody에 문자 전달
@GetMapping("hello-string")
@ResponseBody //http body부분에 데이터 값을 직접 넣어서 반환
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}

템플릿 엔진 사용하지 않고 @ResponseBody를 통해 데이터를 HTTP body에 직접 전송하므로 브라우저에서 반환된 데이터만 보임
- ResponseBody에 객체 전달
@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가 있으면 HTTP의 응답에 데이터를 넣는 동작함
-> HttpMessageConverter가 동작
기본 문자처리: `StringHttpMessageConverter`
기본 객체처리: `MappingJackson2HttpMessageConverter`
객체를 받았기 때문에 json방식으로 데이터 만들어서 HTTP 응답에 반환
'Spring Boot' 카테고리의 다른 글
| [Spring Boot] 회원정보 테스트 에러 (1) | 2024.12.21 |
|---|---|
| [Spring Boot] 회원 관리 (2) | 2024.12.20 |
| API (0) | 2024.12.20 |
| Spring Boot (1) | 2024.12.20 |
| [Spring Boot] 환경 설정 (0) | 2024.12.17 |