[김영한 스프링 강의] 스프링 웹 개발 기초
by mini_min
섹션 2. 스프링 웹 개발 기초
- 정적 컨텐츠
서버에서 하는 것 없이 파일을 웹 브라우저에 내려준 것
- MVC와 템플릿 엔진 (가장 흔함)
예시 : JSP와 PHP
동적으로 바꿔서 내리는 것
- API
보통 JSON 데이터 구조 포맷으로 클라이언트에게 전달하는 방식
[정적 컨텐츠]
스프링 부트는 기본 설정으로 정적 컨텐츠를 제공한다.
[정적 컨텐츠 이미지]
웹 브라우저에서 hello-static 요청을 받음 -> spring 컨트롤러쪽에서 hello-static 관련 컨트롤러를 찾음 -> resources 에서 찾음 -> 있으면 반환
[MVC와 템플릿 엔진]
모델, 뷰, 컨트롤러의 약자
뷰는 화면을 그리는 것에 모든 역량을 집중한다.
컨트롤러나 모델은 비즈니스 로직, 내부적인 처리에 집중해야한다.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value = "name", required = false)String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
[MVC, 템플릿 엔진 이미지]
웹 브라우저가 요청을 받음 -> 내장 톰캣 서버 거침 -> 스프링 컨테이너는 컨트롤러의 메소드 호출해줌 -> 컨트롤러가 주는 return 값을 viewResolver 가 return 값과 똑같은 템플릿에 파라미터를 넣고 반환해준다.
[API]
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello " + name;
}
**ResponseBody 가 중요!
= http 에서 Body 부분에 데이터를 직접 넣겠다는 뜻이다.
그대로 데이터를 내려준다.
(뷰 같은거 거치지 않는다)
아래는 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;
}
}
[ResponseBody 동작원리]
웹 브라우저가 요청 받음 -> 내장 톰캣 서버를 거침 -> 스프링 컨테이너에서 컨트롤러의 메소드를 찾아서 실행 -> @ResponseBody 가 객체를 넘기면 HttpMessageConverter 가 동작한다.
단순 문자면 StringConverter, 이름과 값이 있으면 JsonConverter 가 동작한다. -> 반환
1. ViewResolver 대신 HttpMessageConverter 가 동작한다.
2. 기본 문자 객체는 StringHttpMessageConverter
3. 기본 객체 처리는 MappingJackson2HttpMessageConverter
4. 기타 여러 처리는 HttpMessageConverter 가 기본
'Spring' 카테고리의 다른 글
[김영한 스프링 강의] 스프링 빈과 의존관계 (0) | 2023.05.12 |
---|---|
[김영한 스프링 강의] 회원 관리 예제 - 백엔드 개발 (0) | 2023.05.12 |
[김영한 스프링 강의] 프로젝트 생성 및 세팅 (0) | 2023.05.08 |
[Spring] 스프링 PDF, 엑셀 다운로드 기능 구현 (1) | 2022.12.18 |
[스프링부트] 스프링 부트 주의사항 (1) (0) | 2022.12.09 |
블로그의 정보
개발자 미니민의 개발로그
mini_min