김영한 스프링 입문 강의 정리
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
목차
- 정적 컨텐츠
- MVC와 템플릿 엔진
- API
정적 컨텐츠 (Static Content)
동작 방식
- 내장 톰캣 서버가 요청을 받아 spring에 넘김
- 스프링부트는 우선 controller에서 요청이 매핑된(hello-static) 컨트롤러를 찾아본다. → 있으면 반환
- 찾지 못 한 경우 resources: static/hello-static.html을 찾아서 있으면 반환해준다.
ex)
<!-- hello-static.html -->
<!DOCTYPE HTML>
<html>
<head>
<title>static content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>
MVC와 템플릿 엔진
- M : Model
- V : View
- C : Controller
동작 방식
- 내장 톰캣 서버가 받은 요청을 스프링에 넘김
- 스프링에서 매서드가 매핑된 컨트롤러를 찾아 메서드를 호출한다.
- 호출된 메서드의 리턴값을 스프링에 넘겨준다. viewResolver가 뷰를 찾아 템플릿 엔진을 연결시켜줌
- 템플릿엔진이 렌더링해 변환한 HTML을 웹 브라우저에게 반환한다.
ex)
Controller
@Controller
public class HelloController{
@GetMappint("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
}
View
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
실행 시 에러 발생 → warning 확인 ⇒ Required String parameter ‘name’이 존재하지 않는다.
- @RequestParam에 required 라는 옵션이 있다.
- default가 true로 설정됨
- false로 설정하면 안 넘겨도 됨
- localhost:8080/hello-mvc?name=spring 위와 같은 형식으로 넘겨주면 된다.
API
동작 방식
- 톰캣 내장서버에서 요청을 스프링에 넘김
- 스프링에서 responsBody 붙어있는것을 확인
- 앞에서와 달리 viewResoler에게 주는게 아닌 Http의 Body에 데이터 직접 반환한다. 그런데 return 값이 객체다. 객체는 default로 json방식으로 데이터를 만들어 Http에 반환하는 것이 기본 정책
- HttpMessageConverter가 동작
- 기본 문자 처리 : StringHttpMessageConverter가 동작
- 기본 객체 처리 : MappingJackson2HttpMessageConverter가 동작
- hello 객체를 json 스타일로 바꿔 이를 요청한 곳에 반환해준다.
ex)
Controller
@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;
}
}
- localhost:8080/hello-api?name=spring
- 위와 같이 실행시 화면에 json 형식으로 출력된다.
페이지 소스 보기 : MVC와 API 차이
- MVC
- API
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring Boot] 입문 - 4. 스프링 빈과 의존관계 (0) | 2022.10.22 |
---|---|
[Spring Boot] 입문 - 3. 회원 관리 예제 - 백엔드 개발 (0) | 2022.10.19 |
[Spring] 입문 - 1. 환경설정 (0) | 2022.05.20 |
[Spring] CORS 에러 (0) | 2022.03.16 |
[Spring / DB] 로그인 주의 (0) | 2022.02.23 |