컨트롤러
URL 매핑을 추가하기 위해 MainController.java 파일을 다음과 같이 작성하자.
[파일명:/sbb/src/main/java/com/mysite/sbb/MainController.java]
package com.mysite.sbb;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MainController {
@RequestMapping("/sbb")
public void index() {
System.out.println("index");
}
}
MainController 클래스에 @Controller 어노테이션을 적용하면 MainController 클래스는 스프링부트의 컨트롤러가 된다.
그리고 메서드의 @RequestMapping 어노테이션은 요청된 URL과의 매핑을 담당한다.
서버에 요청이 발생하면 스프링부트는 요청 페이지와 매핑되는 메서드를 컨트롤러를 대상으로 찾는다.
즉, 스프링부트는 http://localhost:8080/sbb 요청이 발생하면 /sbb URL과 매핑되는 index 메서드를
MainController 클래스에서 찾아 실행한다.
@RequestMapping에 http://localhost:8080 과 같은 도메인명과 포트는 적지 않는다.
왜냐하면 도메인명과 포트는 서버 설정에 따라 변하기 때문이다.
이제 다시 http://localhost:8080/sbb URL을 호출해 보자.
이번에도 오류가 발생한다. 하지만 404 오류가 아닌 500 오류코드로 바뀐것을 확인할 수 있다.
http://localhost:8080/sbb 호출시 MainController의 index 함수는 호출되었지만 오류가 발생한 것이다.
URL과 매핑된 함수는 결괏값을 리턴해야 하는데 아무런 값도 리턴하지 않기 때문에 오류가 발생한 것이다.
오류를 해결하려면 클라이언트(브라우저)로 응답을 리턴해야 한다.
콘솔 로그를 보면 index 메스드에서 실행한 System.out.println("index");가 실행되어
"index"라는 문자열이 출력된 것을 확인할 수 있다.
다음과 같이 MainController를 수정하자.
package com.mysite.sbb;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MainController {
@RequestMapping("/sbb")
@ResponseBody
public String index() {
return "index";
}
}
응답으로 "index"라는 문자열을 브라우저에 출력하기 위해 index 함수의 리턴값을 String으로 변경하고
"index"라는 문자열을 리턴했다.
@ResponseBody 어노테이션은 URL 요청에 대한 응답으로 문자열을 리턴하라는 의미이다.
만약 @ResponseBody 애너테이션을 생략한다면 "index"라는 이름의 템플릿 파일을 찾게 되는데 이에 대한 내용은 나중에 자세히 알아본다.
오류가 해결되었는지 http://localhost:8080/sbb URL을 호출해 확인해 보자.
이번에는 MainController의 출력 문자열 "index"를 "안녕하세요 sbb에 오신것을 환영합니다."로 바꾸어보자.
package com.mysite.sbb;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MainController {
@RequestMapping("/sbb")
@ResponseBody
public String index() {
return "안녕하세요 sbb에 오신것을 환영합니다.";
}
}
그리고 브라우저에서 변경한 문자열이 잘 출력되었는지 확인해 보자.
Spring Boot Devtools와 Live Reload 기능에 의해 서버는 물론 브라우저도 리로딩되어
변경된 사항을 추가 작업 없이 즉시 확인할 수 있을 것이다.
'JAVA > SpringBoot CRUD Board' 카테고리의 다른 글
[VSCODE] SpringBoot CRUD게시판 만들기 - 엔티티(Entity) (0) | 2022.07.01 |
---|---|
[VSCODE] SpringBoot CRUD게시판 만들기 - JPA (0) | 2022.06.30 |
[VSCODE] SpringBoot CRUD게시판 만들기 - 프로젝트의 구조 (0) | 2022.06.30 |
[VSCODE] SpringBoot CRUD게시판 만들기 - Lombok(롬복) (0) | 2022.06.30 |
[VSCODE] SpringBoot CRUD게시판 만들기 - 프로젝트 생성 (0) | 2022.06.30 |