상세 컨텐츠

본문 제목

웹 만들어보기

스프링부트(Spring Boot)

by 230719 2025. 1. 20. 01:47

본문

우선, STS 창의 왼쪽 하단에 있는 Boot Dashboard에서 시작버튼을 눌러 서버를 시작해보자.

 

sbb [devtools]를 누른 뒤 시작버튼을 클릭한다.

 

그런다음, 브라우저에서

http://localhost:8080/sbb 페이지를 요청해보자.

 

이러한 페이지가 등장한다.

404 오류는 브라우저가 요청한 페이지를 찾을 수 없다는 의미이다. 

스프링부트 서버가 http://localhost:8080/sbb라는 요청을 해석할 수 없기 때문에 이 오류가 발생했다.

 

이 오류를 해결하기 위해 컨트롤러를 작성하여 /sbb URL에 대한 매핑을 추가한다.

브라우저와 같은 클라이언트의 페이지 요청이 발생하면 스프링부트는 가장 먼저 컨트롤러에 등록된 URL 매핑을 찾고, 해당 URL 매핑을 발견하면 URL 매핑과 연결된 메서드를 실행한다.

//URL 매핑: URL과 컨트롤러의 메서드를 일대일로 연결. 컨트롤러의 메서드에 @GetMapping 또는 @PostMapping 과 같은 애너테이션을 적용하면 해당 URL과 메서드가 연결된다.

 

컨트롤러 만들어서 URL 매핑하기

1. 컨트롤러를 작성하여 URL매핑을 추가하기 위해 다음과 같이 src/main/java 디렉터리의 com.mysite.sbb 패키지에 MainController.java 파일을 작성하자.

 

우클릭>New>Class
Name> MainController 입력

 

처음 MainController.java를 생성하면 

package com.mysite.sbb;

public class MainController {

}

이러한 껍데기 코드만 생성이 되는데, 다음과 같은 코드를 넣어준다.

package com.mysite.sbb;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MainController {
    @GetMapping("/sbb")
    public void index() {
        System.out.println("index");
    }
}

 

MainController 클래스에 @Controller 애너테이션을 적용하면 MainController 클래스는 스프링 부트의 컨트롤러가 된다.

그리고 index 메서드의 @GetMapping 애너테이션은 요청된 URL 과의 매핑을 담당한다. 

 

그러면, /sbb URL 요청이 발생하면, 이것과 매핑되는 index 메서드를 Maincontroller 클래스에서 찾아 실행하는 것이다.

다시 http://localhost:8080/sbb 를 호출하자.

여전히 오류가 발생하지만, 오류 코드가 404에서 500으로 바귀었다.

 

오류코드 500은 아무 값이 없어 발생하는 오류이다. 

오류를 해결하려면 클라이언트(브라우저)로 응답을 리턴해야한다.

 

다음과 같이 MainController.java를 수정하자.

package com.mysite.sbb;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class MainController {

    @GetMapping("/sbb")
    @ResponseBody
    public String index() {
        return "index";
    }
}

@ResponseBody 애너테이션을 추가하고, 리턴을 추가했다.

 

index라는 문자열을 브라우저에 출력하기 위해 index 메서드의 리턴 자료형을 String으로 변경하고 문자열 "index"를 리턴했다.

여기서 @ResponseBody 애너테이션은 URL 요청에 대한 응답으로 문자열을 리턴하라는 의미로 쓰였다.

 

다시 http://localhost:8080/sbb 를 호출하자.

 

제대로 수정이 된 것 같다.

 

이제, index 대신 다른 문자열을 출력해보자.

잘 출력이 된다.

 

관련글 더보기