Development/Springboot
[Springboot] Instagram clone (3)Controller, http 4가지 요청 방식
Juyeong
2022. 7. 2. 14:57
🔻Controller
- 스프링부트는 서블릿(자바로 웹을 할 수 있는 기술)으로 이루어져있다.
- 따라서 요청을 할 때마다 자바 파일이 호출된다.
- 요청의 종류가 3개이면 3개의 JAVA 파일이 필요하다.
- 하나의 자바 파일에서 모든 요청을 받는 Front Controller를 사용한다.
로그인 요청 -> login.java
회원가입 요청 -> join.java
게시글 쓰기 요청 -> write.java
=> FrontController.java (여기서 if, else 분기로 나눔)
→ 너무 많은 요청이 한곳으로 모이는 것을 방지하기 위해 도메인(범주) 별로 분기한다.
User 테이블 ->로그인, 회원가입 -> UserController.java
Board 테이블 ->글쓰기, 글삭제, 글수정 -> BoardController.java
Product 테이블 ->상품등록, 상폼목록보기 -> ProductController.java
→ 둘 다 썩 좋은 방식은 아니다.
→ 프론트 별로 나누면서 그 안에서 적당히 도메인별로 나누는 건 어떨까?
→ 요청을 어디로 보내야할지 분기해주는 것은 Dispatcher (Servlet Dispatcher, Request Dispatcher) 이다.
→ 컨트롤러를 잘 다루면 요청에 대한 처리를 잘 다룰 수 있다 😃
🔻http 4가지 요청 방식
클라이언트가 웹서버에 요청 → 웹서버는 DB에 SELECT, INSERT, UPDATE, DELETE 요청을 해서 응답!

→ 이 이유로 일반 컨트롤러때는 “intdex.jsp” → 파일로 리턴, 레스트 컨트롤러 일 때는 데이터 “get 요청됨”로 리턴
package com.cos.controllerdemo.web;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;
//@Controller
@RestController
public class HttpController {
@GetMapping("/get")
public String get() {
return "get 요청됨";
}
@PostMapping("/post")
public String post() {
return "post 요청됨";
}
@PutMapping("/put")
public String put() {
return "put 요청됨";
}
@DeleteMapping("/delete")
public String delete() {
return "delete 요청됨";
}
}