스프링 부트로 기본적인 웹 프로젝트 만들어보자

2024. 3. 27. 17:55SpringBoot

728x90
반응형

안녕하세요. 진득 코딩입니다. 이번 시간에는 간단한 웹 프로젝트를 만들어 보면서 기본적으로 스프링 부트가 어떻게 작동하고 프로젝트 생성이 잘 되었나 확인해보도록 하겠습니다.

 

웹 서비스 간단 동작 원리

 

 1. 클라이언트와 서버 구조

 기본적인 클라이언트와 서버와의 관계입니다. 클라이언트는 서버에 요청을 하면 서버에서 해당 요청에 대한 처리를 한 후에 클라이언트에게 응답하는 식입니다. request 와 responce만 기억하시면 됩니다. 

 

2. IP 주소와 포트

 포트(port)는 네트워크 서비스를 구분하는 번호이며, 하나의 서버 주소에 포트를 사용하여 매운 많은 서비스를 운영할 수 있습니다. 대표적인 서비스의 종류는 다음과 같습니다.

1. Http: 웹서비스 -> 포트번호 80
2. Https: SSL을 적용한 웹 서비스 -> 포트번호 443
3. FTP: 파일 전송 서비스 -> 포트번호 21
4. SSH, SFTP: 보안이 강화된 TELNET(텔넷), FTP 서비스 -> 포트번호 22
5. TELNET: 원격 서버 접속 서비스 -> 포트번호 23
6. SMTP: 메일 전송 서비스 -> 포트번호 25

 해당 예시에 있는 포트 번호는 Default 값으로 필요에 따라 포트 번호를 별도로 정의하고 변경할 수 있습니다.

 

3. localhost:8080

 프로젝트를 만들게 되면 보통 localhost:8080으로 시작되는 url 주소를 입력하게 됩니다. 여기에서 localhost는 도메인명이 127.0.0.1이라는 IP 주소를 의미하며 해당 주소는 본인의 컴퓨터를 의미합니다. 또한 8080dms 8080번 포트 번호를 의미하게 됩니다. 합쳐서 말하면 내 컴퓨터(localhost)에 8080번 포트로 실행된 서비스를 의미하게 됩니다. 또한 해당 서버는 로컬 서버이므로 외부에서는 접속할 수 없습니다다. 외부에서 접속하게 하려면 배포를 해야 합니다.

컨트롤러 생성

 본격적으로 기본적인 웹 프로젝트를 생성해보도록 하겠습니다. http://localhost:8080/hello와 같은 브라우저의 요청을 처리하려면 먼저 컨트롤러가 필요합니다. 컨트롤러는 서버에 전달된 클라이언트의 요청을 처리하는 자바 클래스입니다.

 main 밑에 java 밑에 com.mysite.testproject에 컨트롤러를 만들기 전에 controller package부터 만들어보도록 하겠습니다. controller는 여러 개 만들 수 있기 때문에 미리 패키지를 생성해서 모아두기 위함입니다.

 com.mysite.testproject에 마우스 오른쪽으로 누른 뒤 New를 누르고 Package를 선택해줍니다.

 위와 같이 기본적으로 group 이름은 적혀있습니다. 그 뒤에 controller라고 적어 controller 패키지를 만들어 줍니다.

 위에서 만든 controller 패키지에서 오른쪽 마우스 클릭을 하면 아까와 같은 창이 뜨게 됩니다. New를 클릭하시고 이번에는 Java Class를 눌러서 controller 패키지 안에 controller 자바 클래스를 생성해줍니다.

 해당 클래스 이름은 필자가 기본 컨트롤러에게 붙여주는 이름인 HomeController라고 지어주었습니다. 이름은 HelloController 등 원하시는대로 지으셔도 되지만 해당 컨트롤러의 기능을 앞에 붙이고 controller라는 단어를 붙여서 이름을 짓는 것이 일반적이고 controller class 파일을 구분하기에도 쉽습니다.

 처음에 cotroller를 생성해주게 되면 위와 같은 화면이 나오게 됩니다. 해당 클래스는 그냥 자바 클래스이므로 controller 클래스에게 필요한 여러 가지 내용들을 적어주어야 합니다.

 가장 먼저 해야 하는 것은 @Controller을 붙여주어야 합니다. 해당 어노테이션의 기능은 해당 클래스가 컨트롤러의 기능을 수행한다는 의미입니다.   hello 메서드에 적용된 @GetMapping("/hello") 어노테이션은 http://localhost: 8080/hello URL 요청이 발생하면 hello 메서드가 실행되는 것을 의미합니다. 즉, /hello URL과 hello 메서드를 매핑하는 역할을 하게 됩니다.

 

@ResponseBody 어노테이션은 hello 메서드의 출력 결과가 문자열 그 자체임을 나타냅니다. 

 

Get 방식 vs Post 방식
- Get 방식: 데이터를 URL에 노출시켜 요청하는 방식
- Post 방식: 데이터를 숨겨서 요청하는 방식

 

 상단 바에 오른쪽을 가리키고 있는 삼각형 표시가 실행 버튼인데 해당 실행 표시가 흑백으로 표시되며 누를 수 없는 상태이면 오른쪽에 있는 Gradle 버튼(코끼리 그림 버튼)을 눌러서 refresh 해주면 해당 실행 버튼이 초록색으로 활성화 되는 것을 확인하실 수 있습니다.

application.properties 설정하기

 

 위 상태에서 그냥 실행하게 되면 실행되지 않고 오류가 발생하게 됩니다.(해당 오류에 대해서 궁금하다면 아래 URL 참고)

https://jinco.tistory.com/5

 

[스프링 부트] ERROR 14360 컨트롤러만 만들고 실행했는데 오류 발생

오류 발생 상황 - 처음 프로젝트를 생성해서 컨트롤러만 생성해서 실행을 했더니 오류가 발생하면서 실행이 안됨 - 데이터 베이스 설정 오류이거나 애플리케이션이 필요로 하는 데이터베이스에

jinco.tistory.com

 

 오류가 나는 이유는 처음에 의존성 주입할 때 MariaDB를 사용한다고 해놓고선 MariaDB에 대한 기본적인 설정도 없기 때문에 생기는 오류입니다. 따라서 데이터베이스에 대한 설정을 application.properties에 설정을 해준 후에 실행을 해야 합니다.

 

3행부터 6행까지의 내용을 추가해주시면 됩니다. 3행은 mariaDB를 사용하면 위와같이 적어주시면 되고 4행에는 jdbc:mariadb://localhost:(본인이 사용하는 mariaDB의 포트 번호-> 기본값은 3306)/(사용할 스키마의 이름)으로 적어주시면 됩니다. 5행에는 username 적어주시면 되고, 6행에는 본인의 마리아DB 비밀번호를 입력하시면 됩니다.

 

 여기까지 잘 따라오셨다면 프로젝트를 실행하시고 URL 주소창에 localhost:8080/hello라고 치시면 return에 적어둔 'Hello World'가 잘 출력되는 것을 확인 하실 수 있습니다.

728x90
반응형
LIST