Programming/Spring boot

Controller와 관련 annotation

녱녱 2023. 3. 22.

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

https://wikidocs.net/book/7601

'Programming > Spring boot' 카테고리의 다른 글

Entity와 관련 annotation  (0) 2023.03.27
[DB] Spring Boot 프로젝트에 DB 연동하기(MySQL)  (0) 2023.03.17

댓글