본문 바로가기
Spring

Spring Boot Controller 동작 방식 정리

by 쌩욱 2021. 8. 9.

기본 동작방식 이해하기

 

스프링부트는 servlet으로 만들어져 있습니다. 

Servlet이란 ? : 자바로 웹을 할 수 있는 기술

요청을 할 때마다 Java 파일이 호출됩니다. 그러면 요청마다 자바 파일이 필요합니다.

1.     로그인 요청 -> Login.java
2.     회원가입 요청 -> Join.java
3.     게시글 쓰기 요청 -> Write.java

 

그래서 하나의 자바 파일에서 모든 요청을 받는 FrontController 사용합니다.

로그인, 회원가입, 게시글 쓰기 등 모든 요청 -> FrontController.java

 

이 때 한 컨트롤러에 너무 많은 요청이 모이는 것을 방지하기 위해 도메인 별로 분기합니다.

User 테이블 : 로그인, 회원가입.. -> UserController.java
Board 테이블 : 글 쓰기, 삭제, 수정 -> BoardController.java
Product 테이블 : 상품 등록, 목록 -> ProductController.java

 

분기는 Dispatcher가 요청을 보고 어떤 컨트롤러로 분기시켜야 할 지 결정해줍니다.

(= ServletDispatcher, RequestDispatcher) (스프링은 Dispatcher가 이미 만들어져 있음)

 


HTTP 요청 방식

1.     GET – 데이터 요청

2.     POST – 데이터 전송 (Http Body 필요 / 데이터를 담고있기 때문에)

3.     PUT – 데이터 갱신 (Http Body 필요 / 데이터를 담고있기 때문에)

4.     DELETE – 데이터 삭제

 

            GET 요청        SELECT       응답            응답

클라이언트 -----> 웹서버 -----> DB -----> 웹서버 -----> 클라이언트

 

* DB는 웹서버로 레코드를 응답

* 웹서버는 클라이언트에게 .html 파일이나 데이터(ex. 문자열)을 응답

 

http 쿼리스트링 : /abc?name=john

주소 변수 매핑 (path variable) : /abc/john

 

http의 content-type 이란?

1. x-www-form-urlencoded (스프링부트 기본 타입)

2. text/plain

3. application/json

 


스프링 Json 응답

컨트롤러가 자바 객체를 리턴하면 Spring의 MessageConverter가 자동으로 Json(구:xml)으로 변경해서 통신을 통해 응답한다.

 ** @RestController일 때만 MessageConverter가 작동한다. **

 

스프링 Jsp, mustache 파일 응답

.jsp 파일과 .mustache 파일은 템플릿 엔진을 사용합니다.

템플릿 엔진이란? : html 파일에 Java 코드를 쓸 수 있게 하는 것

 

- resources/templates 폴더 안에 템플릿엔진 파일을 놔두면 확장자 없이 파일명만 적으면 자동으로 찾음

- 템플릿 엔진으로 동적인 응답을 가능하게 함

- 템플릿엔진으로 자바 코드를 보내고 싶을 땐 컨트롤러에서 Model 객체에 addAttribute로 추가하고 반환하면 템플릿엔진 코드(.jsp)에서 ${속성명} 으로 사용가능

 

http요청 redirection

- http 상태코드 300번대

- 다른 주소로 요청을 분배함

- 반환할 때 "redirect:/~/~" 로 redirection 가능