Spring은 servelet으로 형성되어있으며 servelet은 Java로 만들어졌다
그러므로 Client가 요청을 할떄마다 JAVA파일을 호출해야한다
로그인,회원가입,글쓰기,댓글 등... 하나의 Controller에 모든 요청을 담고 실행하는것은 서버에 너무 많은부담을 야기한다.
이렇게 한곳에 요청이 모이는 것을 '도메인'으로 나누어 처리하여 부담을 줄인다
그래서 만들어진게 UserController, BoardController 등.. 관련된 요청을 나누어 분배한다.
즉, 요청을 분기 나누어서 controller에 배정해주는것을 ServeletDisPatcher라 한다. ServeletDisPatcher는 client의 요청을 처리할 수 있는 적합한 Controller에 배정해주는 역할을 수행
ContentType을 명시하고 보내야 받는 쪽이 편함
ex. 쌀 ,보리 , 밀가루 포대가 있는데 앞에 무엇인지 안써놔있으면 일일이 다 검사하고 분류해야하므로 비효율적이다. 코딩에도 content Type을 같이 보내면 다 검사하지 않고 분류해도 되서 편해짐
post,put에만 필요 get,delete는 body가 필요하지 않으므로!
스프링부트는 기본적으로 x-www-form~~ 을 기본값으로 파싱한다.
Controller : File을 응답하는 Controller
RestController : Data를 응답하는 Controller
Controller에서 return 값은 html을 응답하는 경로를 제공하는 것이고
RestController에서 return 값은 Data를 client에 전달해줌
@Controller
public class lab{
....
public String yb() {
return "index"
}
// index.html를 불러 client에 전달한다
}
Url endPoint에 ?로 시작하면 쿼리스트링
// 쿼리 스트링
@GetMapiing("/chicken")
public String chickenqu (String type){
return type + "배달갑니다"
}
@GetMapiing("/chicken2")
public String chickenPath(@PathVariable String type){
return type + "배달갑니다"
}
이 둘의 차이는 URL에서 클라이언트가 (ip주소 / chicken2/ 양념 )
이렇게 작성해서 보내면 클라이언트는 양념 배달갑니다를 바로 요청값으로 얻을 수 있음
그러므로 주소변수 매핑이 사용에 간편하다.