일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- github
- playgrounds
- ubuntu java
- GCP
- remote
- Xcode
- VM
- initandlisten
- mongod
- 27inch
- cloud
- Media-type
- 가상머신
- MongoDB
- navercloud
- MAC
- Android
- 27017
- freetier
- ubuntu
- npm update
- naver
- Spring
- errorstack
- springboot
- for developer
- java
- openjdk
- 몽고디비
- instance
- Today
- Total
김컴공랩
[스프링부트] Spring 으로 웹 서비스 만들기 - 컨트롤러 생성 1 본문
헬로월드! 김컴공입니다.
이번 포스팅에서는 이전 포스팅에서 생성했던 스프링 프로젝트에서, 클라이언트의 웹 요청에 대응하는 컨트롤러를 생성하도록 하겠습니다. 오늘의 목표로는, 사용자가 "/hello" 라는 GET 요청을 했을 때 서버가 "Hello World!" 라는 문자열을 반환하게끔 만들어 보겠습니다.
프로젝트 초기 화면입니다. 왼쪽의 Project Navigator 에서 프로젝트를 열어 프로젝트의 디렉터리 구조를 한번 살펴볼까요?
스프링 프로젝트 구조
대표적인 디렉터리만 살펴보겠습니다. project/src/main 디렉터리가 가장 많이 다루게 될 디렉터리입니다.
1. main/java 내에서 컨트롤러, 서비스 클래스들을 생성할 것이고, 데이터베이스와 연동할 때 사용하게 될 모델 또한 이 디렉터리에 생성합니다. 데이터베이스 연동에 관해서는 이후 다른 포스팅에서 꼭 살펴볼 예정이니 우선은 가볍게 이해하고 넘어갑니다.
2. main/resources 내에서는 웹 서비스에서 사용되는 리소스들을 저장하는 디렉터리입니다.
static/ 에는 웹서비스에 사용되는 웹 문서나 이미지 등이 사용되기도 하고 React, Vue 와 같은 프론트엔드 빌드파일이 들어가서 배포되기도 합니다.
templates/ 에는 thymeleaf 라는 템플릿언어로 만들어진 웹페이지를 저장하는 곳으로, 웹 문서 등이 들어가기 때문에 static 과 비슷한 역할을 합니다. 후에 타임리프를 이용해 웹페이지를 생성해볼 것이기 때문에 이런 디렉터리 구조가 있구나 정도로만 파악하시면 됩니다.
application.properties 는 서버 설정파일로, 서버가 어떤 포트로 배포되는지, 어떤 데이터베이스와 연동되는지 등에 관한 정보들을 다룹니다. 이 또한 앞으로 자주 다룰 파일입니다.
3. pom.xml 에는 Spring 프로젝트에 사용되는 의존성이나 플러그인 등을 주입할 수 있고, 현재 프로젝트의 이름이나 버전이 어떤지 등 프로젝트의 상세정보를 기록해둔 파일입니다. 어떤 새로운 기능을 위해 의존성을 추가하려고할 때, 이 파일에 선언을 하면 됩니다.
컨트롤러 생성
이론을 많이 배워놨으니, 실전도 한번 연습해보겠습니다. Project명Application.java 가 존재하는 디렉터리에 다음과 같이 MainController.java 를 생성하겠습니다.
package com.kimce.testbackend;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MainController {
@GetMapping("/hello")
public @ResponseBody String hello() {
return "Hello World!";
}
}
사용자(클라이언트)가 웹 서비스를 요청하면, 우리가 개발할 서버는 그에 대한 답을 해야겠죠? 그러한 역할은 컨트롤러가 수행합니다.
위의 컨트롤러는 사용자가 "/hello" 라고 GET 호출을 하면 서버는 "Hello World!" 라는 문자열로 답장을 해주는 겁니다.
@Controller - 해당 클래스가 컨트롤러 임을 표현합니다.
@GetMapping("/hello") - 서버가 GET Request 중에서 "/hello" 에 해당하는 요청을 매핑했을 때 다음 함수를 수행한다고 선언합니다.
@ResponseBody - 해당 함수는 리턴 결과가 Thymeleaf 템플릿이 아닌, 문자열로 클라이언트에게 Response 값을 건네줍니다.
위 세 가지 Annotation을 이해하고 넘어가셔야 합니다. 그럼 다음 포스팅에서 스프링에 적용해서, 로컬에서 결과를 체크해보도록 하겠습니다.
'스프링부트' 카테고리의 다른 글
[스프링부트] Spring 으로 웹 서비스 만들기 - 타임리프 1 (0) | 2021.01.17 |
---|---|
[스프링부트] Spring 으로 웹 서비스 만들기 - 컨트롤러 생성 2 (0) | 2021.01.11 |
[스프링부트] Spring 으로 웹 서비스 만들기 - 프로젝트 생성 (0) | 2021.01.11 |
[SpringSecurity] JWT 구현 시 javax/xml/bind/DatatypeConverter 에러 대처법 (0) | 2020.10.07 |
[Spring] AJAX 로 JSON 전송할 때 Controller 내 에러 해결 방법 (0) | 2020.09.24 |