본문 바로가기
🍃 𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁

스프링부트, MVC 패턴 Controller(컨트롤러)의 역할과 생성 (URI)

by 비타민찌 2021. 8. 4.
728x90

Spring Boot 🍃

Controller(컨트롤러)의 역할과 생성

🧐 MVC 패턴

애플리케이션의 역할을 모델(Model), 뷰(View), 컨트롤러(controller)로 나누어, 이들 사이 상호작용을 통제하는 아키텍처 패턴이다.

1. 모델(Model) : 비즈니스 규칙을 표현

2. 뷰(View) : 프레젠테이션을 표현

3. 컨트롤러(Controller) : 위 두가지를 분리하기 위하여 양측 사이에 배치된 인터페이스.

이번 포스팅에서는 MVC 패턴의 개념과 Controller의 개념,

그리고 스프링 부트에서 Controller 생성 하는 방법을 알아본다.

1. Controller의 두가지 역할

Controller는 MVC 패턴의 C에 해당하고,

주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 수행한다.

지정된 뷰에 모델 객체를 넘겨주는 역할은 두 가지로 나누어 설명할 수 있다.

1. 사용자들이 웹브라우저에서 'URI *'로 요청을 보내면, 그 요청을 컨트롤러가 받게된다.

2. 요청에 대한 응답(View)을 반환한다.

💡 URI ?

URI, URL의 차이 **

URL은 많이 들어봤는데, URI 는 뭘까? 중요한 개념이니 짚고 넘어가자.

우선 각각의 의미는 다음과 같다.

URL
Uniform Resource Locator
URI
Uniform Resource Identifier
locator.

자원을 '서버에 있는 폴더' 위치로 찾아간다.
ex) web/app/...

id.

위치로 찾아가게 하는 것이 아니라,
아이디로 매핑시켜놓는다.
따라서 사용자에게 파일 이름, 위치 노출이 되지 않는다.
(그래서 컨트롤러를 만든다는 말은 곧 URI를 만든다는 말.)
https://blog.naver.com/ghdalswl77/222454095003

단어에서 알 수 있듯, 위치와 식별자 라는 차이가 있다.

예를 들어 http://opentutorials.org:3000/main?id=HTML&page=12 라는 주소가 있다고 하자.

여기서 http://opentutorials.org:3000/main 까지는 URL이다.(URI이기도 한)

그리고 http://opentutorials.org:3000/main?id=HTML&page=12 이 것은 URI라고 할 수 있다. (URL은 아닌)

다시말해 URL은 자원의 '위치'를 나타내 주는 것이고, URI는 자원의 '식별자'이다.

?id=HTML&page=12 이 부분은 위치를 나타내는 것이 아닌

id값이 HTML이고, page가 12인 것을 나타내주는 식별하는 부분이기 때문이다.

2. Controller 생성

개발도구: 인텔리제이

1.

/main/java/web(프로젝트이름) 아래에 controller 이름의 패키지를 만들고 그 아래 TestController 라는 클래스 파일을 생성한다.

2

아래 코드와 같이

/test 아래에 /ex1 메소드를 생성한다.

import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/test") public class TestController { @GetMapping("/ex1") public void ex1() { System.out.println("ex1..............."); } }

3.스프링부트 프로젝트를 실행한다.

실행은 우측 Gradle 탭에서 web(프로젝트 이름)/Tasks/application/bootRun 더블클릭.

4.주소창에

localhost/test/ex1 로 접속한다. 다음과 같은 페이지가 뜰 것이다.

이 페이지는 404 에러로,

아직 보여줄 페이지(View)가 없기 때문에 해당 에러 페이지가 뜨는 것이다.

이번 포스팅에서는 Controller의 첫 번째 역할(사용자들이 웹브라우저에서 'URI'로 요청을 보내면, 그 요청을 컨트롤러가 받게된다.)만 설명할 것이기에, 위의 에러는 다음 포스팅에서 해결한다.

이렇게 접속하고, 콘솔을 보면 ex1... 이라는 메시지가 떴을 것이다.

이는 메서드가 일단 실행 되었다는 뜻이다.

📝 정리

사용자가 uri로 요청을 했을 때,

서버로 요청이 들어오면

uri가 매핑된 컨트롤러의 메소드가 실행된다.

아래 사진은 이번 포스팅의 전체적인 정리라 할 수 있겠다.

 

 

728x90

댓글