Spring - Controller보완

김용빈·2022년 9월 9일
0

Spring 내부

Spring은 servelet으로 형성되어있으며 servelet은 Java로 만들어졌다

그러므로 Client가 요청을 할떄마다 JAVA파일을 호출해야한다

로그인,회원가입,글쓰기,댓글 등... 하나의 Controller에 모든 요청을 담고 실행하는것은 서버에 너무 많은부담을 야기한다.

이렇게 한곳에 요청이 모이는 것을 '도메인'으로 나누어 처리하여 부담을 줄인다

그래서 만들어진게 UserController, BoardController 등.. 관련된 요청을 나누어 분배한다.

즉, 요청을 분기 나누어서 controller에 배정해주는것을 ServeletDisPatcher라 한다. ServeletDisPatcher는 client의 요청을 처리할 수 있는 적합한 Controller에 배정해주는 역할을 수행

Http

HTTP에 관련된 정보

  • endpoint: http://Ip주소/user/Yb 이렇게 존재하는 Url이 있다고 가정하면,
    여기서 user/yb가 endpoint이다
  • 쉽게 말하자면 endPoint는 무엇을하길 원하는걸 client가 말하는 것
  • Http Body 는 데이터를 담고 있다
    Post, Put이 Body에 데이터를 담고있음

http Header의 Content Type 이해

ContentType을 명시하고 보내야 받는 쪽이 편함
ex. 쌀 ,보리 , 밀가루 포대가 있는데 앞에 무엇인지 안써놔있으면 일일이 다 검사하고 분류해야하므로 비효율적이다. 코딩에도 content Type을 같이 보내면 다 검사하지 않고 분류해도 되서 편해짐

post,put에만 필요 get,delete는 body가 필요하지 않으므로!

스프링부트는 기본적으로 x-www-form~~ 을 기본값으로 파싱한다.

Controller와 RestController의 차이

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에 전달한다
}

주소변수 매핑 , Http 쿼리 스트링

Url endPoint에 ?로 시작하면 쿼리스트링

// 쿼리 스트링

@GetMapiing("/chicken")
public String chickenqu (String type){
	return type + "배달갑니다"   
}

@GetMapiing("/chicken2")
public String chickenPath(@PathVariable String type){
	return type + "배달갑니다"   
}

이 둘의 차이는 URL에서 클라이언트가 (ip주소 / chicken2/ 양념 )
이렇게 작성해서 보내면 클라이언트는 양념 배달갑니다를 바로 요청값으로 얻을 수 있음

그러므로 주소변수 매핑이 사용에 간편하다.

profile
안녕하세요!

0개의 댓글