Controller란?
MVC 디자인 패턴을 기반으로 하며 C에 해당 하는 부분이다. 사용자의 요청을 처리한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한다.
Controller 관련 annotation
- @Controller
- 해당 클래스를 Controller로 사용한다고 Spring Framework에게 명시
- 필요한 비즈니스 로직을 호출, 전달할 모델과 이동할 뷰 정보를 DispatherServlet에 반환
- Bean으로 등록
- @RequestMapping
- 요청에 대해 어떤 Controller 즉, 어떤 메소드가 처리할지 mapping
- URL을 함께 명시하여 사용
- 속성: value, method, params
- value(String[]) : URL 값
- method(RequestMethod[]): HTTP Request 메소드 값
- @RequestParam: 사용자가 원하는 매개변수에 값을 mapping, 생략 가능
- @PathVBariable: URL 경로를 변수화 해서 사용
사용해보기
브라우저에서 localhost:8080/hello를 요청해 보면 아래와 같이 서버가 요청을 처리할 수 없다는 404 not found 오류가 나타나게 된다.
오류를 해결하기 위해선 컨트롤러를 작성하고 /hello라는 mapping을 추가해 주면 된다. 앞서 말했듯 페이지 요청이 발생하면 스프링부트는 컨트롤러에 요청된 페이지의 URL mapping이 있는지를 조사하기 때문이다.
위와 같이 컨트롤러를 작성하고 @GetMapping을 통해 원하는 경로를 추가해줬다.
서버 통신 과정에 의해 내가 리턴 값으로 지정한 "안녕하세요:)"는 리턴되지 않는다. 때문에 500 오류가 발생하며 이 때 @ResponseBody annotation을 사용하게 되면 URL 요청에 대한 응답으로 문자열을 리턴 받을 수 있다. annotation을 추가해보자
@ResponseBody annotation을 추가했다. 서버를 재시작하고 다시 localhost:8080/hello를 요청해보자
요청이 성공적으로 처리됐다!
추후에 클라이언트-서버 간 통신에 대해서도 정리해야겠다!
📕 Reference
'Programming > Spring boot' 카테고리의 다른 글
Entity와 관련 annotation (0) | 2023.03.27 |
---|---|
[DB] Spring Boot 프로젝트에 DB 연동하기(MySQL) (0) | 2023.03.17 |
댓글