오늘도 배우자!

귀찮음에 배움을 멀리하지 않기를...

Develop/Server

SpringBoot Controller, Service, DAO 이해 - Controller(2)

리다양 2019. 3. 22. 16:25

1년이나 지나서 다시 돌아왔습니다~~~!!!!

 

회사다니면서 블로그를 관리하려니 생각보다 어려워서요 ㅠㅠㅠ

생각보다 매일 방문해주시는 분들이 많아서 다시 작성하기로 마음먹었습니다!! 짝짝짝

 

다시 한번 달려볼까요??

 

이전글에서는 Controller 가 어떤 역할을 수행하는 놈인지 알아봤는데요

이번에는 Controller 를 사용해야할지 진행해보도록 하겠습니다!!

 

그.전.에!

 

혹시 HTTP Request 를 날릴 때 GET / POST 방식을 모르는 분들을 위해서 잠시 짚고 넘어갈게요!!

 

1. GET / POST

GET

base url 뒤에 원하는 값을 쿼리 형태로 붙여서 request 보내는 것

ex) http://ysjleader.com?name=ysjleader&age=27

base url 은 ysjleader.com 이 되구 name, age 라는 변수에 값을 담아 보내는 모양입니다~!!

?name=ysjleader&age=27 요기가 쿼리 형태가 되겠죠??

 

 

POST

base url 뒤에 request 시 값이 붙지 않고 HTTP 패킷의 BODY에 보내는 것

이녀석을 사용하려면 Client에서 POST 로 직접 정의하고 원하는 변수를 보내줘야합니다.

 

2. Controller 에서 동일 URL로 들어오는 Request 를 GET / POST 따로 처리하기

GET

@RequestMapping(value = "/userInfo", method = RequestMethod.POST)
public String postUserInfo(@RequestParam("userName") String userName, @RequestParam("userAge") String userAge, Model model) {
  model.addAttribute("userName", userName);
  model.addAttribute("userAge", userAge);
  return "user";
}

Client 가 주소창에 http://ysjleader.com/userInfo?name=ysjleader&age=27 요렇케 치고 엔터를 딱 누르면 GET 방식으로 요청이 되는 것인데요

기본적으로 주소창에 url 을 입력하고 엔터를 치는 것은 GET 방식입니다.

그래서 Controller 내에 구현되어있는 저 컨트롤러는 base url(ysjleader.com) 뒤에 /userInfo 라는 경로로 요청이 들어왔으니

value="/userInfo" 의 값을 가진 Controller 내 메서드가 작업을 담당하겠죠??

 

그리고 이제 url에서 ? 뒤에보면 key=value 형태로 요청이 왔는데요 name=ysjleader&age=27 요기서 name과 age가 변수로 들어오게 되는 것 입니다.

@RequestParam 이라는 어노테이션이 앞글과 다르게 새로 등장했는데요 요녀석의 역할은 Request로 넘어온 Parameter를 처리하겠다!!! 라는 뜻이고 그럼 parameter 가 넘어왔으니 변수는 항상 이름이 있으니 어떤 이름의 parameter 를 받을지 결정하는 것이 @RequestParam("name") , @RequestParam("age") 요기서 괄호의 역할이라고 보면 되겠습니다.

 

그럼 Request 로 넘어온 Parameter 중에서 name이라는 변수를 받는 녀석을 구현하려면 @RequestParam("name") 이 되겠죠?? 아쥬 쉽져?? 그리고 변수를 받는 방법이 준비 되었으니 그 변수는 어떤 자료형으로 받을지 정의해야겠죠? 그부분이 바로 뒤에 이어서나오는 String userName이 되겠습니다.

 

그럼 같이 한번 @RequestParam("age") String userAge 를 해석해볼까요??

Request 를 통해 Parameter 들이 넘어오고 그 Parameter 중 age 라는 이름을 가진 녀석을 userAge 라는 변수에 String 형태로 받겠다!!! 같은 생각을 하셨나요?? 그럼 박수 세번 시작!! 아쥬 잘했습니돠~~!!!

 

POST

 

@RequestMapping(value = "/userInfo", method = RequestMethod.POST)
public String postUserInfo(@RequestParam("userName") String userName, @RequestParam("userAge") String userAge, Model model) {
    model.addAttribute("userName", userName);
    model.addAttribute("userAge", userAge);
    return "user";
}

요녀석은 GET 에서 딱하나 다른데요 바로 method=RequestMethod.POST 요부분 입니다.

(사실 GET은 method=RequestMethod.GET 을 안붙여도 디폴트로 GET을 바라보기때문에 문제없지만...)

GET,POST 모두 어떤 방법 즉, method 로 받을지 결정을 해주어야하는데요 바로 method=RequestMethod.POST 요부분이 그 부분을 담당해줍니다.

 

다른 내용은 위의 GET 설명에서 했기때문에 패스~~