스프링 웹 개발 기초
- 정적 컨텐츠
- MVC와 템플릿 엔진
- API
1. 정적 콘테츠
-클라이언트의 요청을 받고 서버에 미리 저장된 HTML, CSS 등의 파일을 그대로 응답해 보여주는 것
-런타임 시에 컨텐츠의 내용이 변경되지 않고 현재 소스 코드 그대로 페이지를 보여준다.
파일의 내용 그대로 웹브라우저에서 보여주고 있다.
1. 웹브라우저에서 url을 입력해서 내장 톰켓 서버에 요청을 한다.
2. 먼저 스프링은 hello-static 관련 컨트롤러가 있는지 찾고, 있으면 반환한다.
3. 만약 없다면, 스프링부트는 resource에서 hello-static을 찾고 있으면 반환한다.
2. MVC와 템플릿 엔진
-MVC: Model, View, Controller
-Controller는 내부적으로 비즈니스 로직을 처리하고, View는 화면 설계 및 보여지는 것에 집중한다.
-사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고,
그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달한다.
HelloController.java에 아래 코드를 추가한다.
cf) @Controller : 해당 클래스가 Controller임을 나타내기 위한 어노테이션
@GetMapping : Get 요청을 하는 API의 어노테이션으로 데이터를 가져올 때 사용한다.
@RequestParam : url을 통해 전달된 값을 파라미터로 받아오는 어노테이션이고,
반드시 요청 파라미터가 존재해야 한다. (value=" ", required = false)
Model model : 컨트롤러에서 뷰로 데이터 전달
model.addAttribute("name", name) : "name"이라는 속성을 model에 추가하고, value 값으로는 요청받은 name을 설정
template/hello-template.html을 생성한다.
@RequestParam은 요청 파라미터 값이 필수적으로 요구되기 때문에, name의 값을 지정해야 한다.
만약 설정하지 않았다면 localhost:8080/hello-mvc?name=spring으로 입력하여 name의 값을 spring으로 바꿔서 요청해야 한다.
cf) ${name}에서 name의 값은 spring이 된다
1. 웹브라우저에서 url을 입력해서 내장 톰켓 서버에 요청을 한다.
2. 톰켓은 Controller에 요청을 보내고, 메소드를 매핑한다.
3. 메소드가 모델에 변수(name)를 지정하고, hello-template를 리턴한다.
4. viewResolver는 템플릿엔진을 연결해준다.
5. html을 찾아서 Thymeleaf 엔진에 전달하고, 엔진은 변환한 html을 웹 브라우저에 넘겨준다.
3. API
HelloController.java에 아래 코드를 추가한다.
@ResponseBody : http의 응답 body 부분에 데이터를 직접 반환하기 때문에, viewResolver를 사용하지 않는다.
HelloController.java에 아래 코드를 추가한다.
객체를 생성 후 반환을 하는데, 그 결과가 json 형식(key-value 쌍)을 이용하여 객체가 표시된다.
viewResolver 대신에 HttpMessageConverter가 동작하여 객체 혹은 문자를 json 형태로 변환 후 반환한다.
'Spring > 스프링 입문' 카테고리의 다른 글
인프런 스프링 입문 강의 정리 #6 (1) | 2023.11.17 |
---|---|
인프런 스프링 입문 강의 정리 #5 (0) | 2023.11.17 |
인프런 스프링 입문 강의 정리 #4 (0) | 2023.11.17 |
인프런 스프링 입문 강의 정리 #3 (0) | 2023.11.16 |
인프런 스프링 입문 강의 정리 #1 (0) | 2023.11.15 |