컨트롤러 만들어서 URL 매핑하기
웹 브라우저와 같은 클라이언트의 요청이 발생하면 서버 역할을 하는 스프링 부트가 응답해야 한다. 그러기 위해서는 URL이 스프링 부트에 매핑되어 있어야 하고 이를 위해서는 먼저 컨트롤러를 만들어야 한다.

1) 컨트롤러를 작성하여 URL 매핑을 추가하기 위해 다음과 같이 src/main/java 디렉터리의 com.mysite.sbb 패키지에 MainController.java 파일을 작성해 보자.
자바 파일을 만드는 법을 잊었다면 1-03절로 돌아가 살펴보고 오자.
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을 요청하면 스프링 부트는 요청 페이지와 매핑되는 메서드를 찾아 실행한다.
정리하자면, 스프링 부트는 웹 브라우저로부터 http://localhost:8080/sbb 요청이 발생하면 /sbb URL과 매핑되는 index 메서드를 MainController 클래스에서 찾아 실행한다.
@GetMapping에는 http://localhost:8080과 같은 도메인명과 포트는 적지 않는다. 도메인명과 포트는 서버 설정에 따라 변하기 때문이다. 서버와 관련해서는 4장에서 더 자세히 다루므로 여기서는 이 정도만 알고 넘어가자.
2) 다시 http://localhost:8080/sbb URL을 호출해 보자.

이번에도 오류가 발생한다. 하지만 404가 아닌 500 오류 코드로 바뀐 것을 확인할 수 있다. 브라우저가 http://localhost:8080/sbb 요청했을 때 MainController 클래스의 index 메서드가 호출되긴 했지만 오류가 발생한 것이다. 원래 URL과 매핑된 메서드는 결괏값을 리턴해야 하는데 아무 값도 리턴하지 않아 이와 같은 오류가 발생한 것이다. 즉, 오류를 해결하려면 클라이언트(브라우저)로 응답을 리턴해야 한다.
콘솔 로그를 보면 index 메서드에서 실행한 System.out.println("index");가 실행되어 ‘index’라는 문자열이 출력된 것을 확인할 수 있다. 따라서 index 메서드가 호출되었음을 알 수 있다.

3) 다음과 같이 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";
}
}
응답으로 'index'라는 문자열을 브라우저에 출력하기 위해 index 메서드의 리턴 자료형을 String으로 변경하고 문자열 'index'를 리턴했다. 여기서 @ResponseBody 애너테이션은 URL 요청에 대한 응답으로 문자열을 리턴하라는 의미로 쓰였다.
만약 @ResponseBody 애너테이션을 생략한다면 스프링 부트는 'index'라는 문자열을 리턴하는 대신 index라는 이름의 템플릿 파일을 찾게 된다. 템플릿 파일에 관한 내용은 2-07절에서 더 자세히 알아본다.
4) 오류가 해결되었는지 웹 브라우저에서 http://localhost:8080/sbb URL을 호출해 다음과 같은 화면이 등장하는지 확인해 보자.

5) 이번에는 MainController.java를 수정하여 문자열 'index' 대신 '안녕하세요 sbb에 오신 것을 환영합니다.'를 출력해 보자.
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 "안녕하세요 sbb에 오신 것을 환영합니다.";
}
}
6) 그리고 브라우저에서 변경한 문자열이 잘 출력되었는지 확인해 보자.

STS의 Spring Boot Devtools에 의해 서버를 재시작하지 않고 브라우저만 새로 고침하여 문자열이 제대로 출력되는지 확인할 수 있다.
