Skip to main content

02. Controller 만들기

01. 컨트롤러 만들기

프로젝트를 생성했으니 이제 예시로 페이지를 만들어 보려한다.

http://localhost:8080/hello 라는 URL을 만들어 테스트할 것이며,

해당 요청을 받기 위해선 컨트롤러를 만들어서 사용하여야 한다.

* 컨트롤러는 클라이언트에서 받은 요청을 관리하는 자바의 클래스이다.


프로젝트의 메인 파일을 우클릭하여 Class를 새로 만들어 준다

image.png

컨트롤러 명을 입력 후 생성해준다.

image.png

정상적으로 컨트롤러 클래스가 생성됨을 확인

image.png

위 코드는 그냥 기본 템플릿이므로 아래와 같이 내용을 추가해주자

* 파이썬만 해보고 자바를 아직 몰라서 조금 헷갈린다.

@ 표시가 java에선 함수인가?

package com.example.demo;

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

@Controller
public class HelloController {
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello World";
    }
}

* 파이썬만 해보고 자바를 아직 몰라서 조금 헷갈린다.

@ 표시가 java에선 무슨 의미일까

-> 어노테이션이라고 한다.

-> 컴파일러, 런타임, 프레임워크에 "이 코드에 이런 의미가 있다." 알려주는 것

-> 주석과는 다른 개념, 어노테이션은 컴파일러, 프레임워크가 읽고 동작을 바꾸기도 함

@Controller

-> HelloController 클래스가 컨트롤러의 기능을 수행한다고 알려줌

@GetMapping("/hello")

-> URL 요청이 발생하면 hello 메서드가 실행됨을 의미

-> Get 방식의 URL 요청을 사용 -> @GetMapping 사용

-> Post 방식의 URL 요청을 사용 -> @PostMapping 사용

@ResponseBody

-> 메서드의 출력 결과가 문자열 그 자체임을 나타냄

-> 해당 어노테이션이 없으면 "hello World"라는 html파일을 찾음

-> 해당 어노테이션을 사용해 "hello World"라는 문자열 자체를 출력 (명령어로써 동작하지 않도록)

-> 반대되는 예로 위의 "/hello" 는 @ResponseBody어노테이션이 적용되어 있지 않기 때문에 /hello 라는 html 파일을 찾아 '매핑'한다.

-> 매핑한다. = 특정 URL 경로를 서버의 특정 메서드와 연결



02. 로컬 서버 실행하기

앞에서 사용자 요청을 철히하는 컨트롤러를 만들었으니 제대로 작동하는지 확인해보자

그러기 위해선 로컬 서버를 실행하여야 한다.

Boot Dashboard 기능에서 프로젝트를 선택한 후 재생버튼을 눌러주자.

image.png

로딩 마크가 돌아가면서 서버가 실행됨을 확인

image.png

이제 테스트를 위해 브라우저를 열고 http://localhost:8080/hello 로 진입해보자

image.png

정상적으로 문자열이 추가됨을 확인