겉바속촉

[점프투스프링부트] 1-04. 스프링부트 맛보기 본문

IT 일기 (상반기)/SPRING 기초

[점프투스프링부트] 1-04. 스프링부트 맛보기

겉바속촉 2023. 2. 21. 17:46
728x90
반응형

 

점프투스프링부트 1-04

 

 

 

목표

브라우저 주소창에 http://localhost:8080/hello 라는 URL을 입력했을 때 브라우저 화면에 "Hello World"라는 문구를 출력하는 웹 프로그램을 작성해 볼 것

 

이 프로그램이 동작하기 위해서는 컴퓨터(localhost)가 웹 서버가 되어 8080 포트에서 실행되어야 하고 

http://localhost:8080/hello 라는 URL을 통해 서버에 요청이 발생하면 "Hello World" 라는 문구를 브라우저 화면으로 출력해야 한다.

 

 

 

1. HelloController

http://localhost:8080/hello 와 같은 브라우저의 요청을 처리하기 위해서는 컨트롤러(Controller)가 필요.

컨트롤러는 서버에 전달된 클라이언트의 요청(URL과 전달된 파라미터 등)을 처리하는 자바 클래스.

컨트롤러를 만들어 보자.

 

 

 

위 그림처럼 순서대로 com.mysite.sbb 위치에서 마우스 우측 버튼을 누르고 New, Class를 선택한다. 그러면 다음과 같은 화면이 나타난다.

 

 

Name 항목에 HelloController라고 입력한후 "Finish"를 누르자.

그러면 다음과 같은 HelloController.java 파일이 생성된다.

 

하지만 지금 작성한 HelloController는 껍데기 클래스이므로 컨트롤러의 기능을 갖추려면 다음과 같이 수정해야 한다.

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 HelloController {
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello World";
    }
}

 

@Controller -> HelloController 클래스가 컨트롤러의 기능을 수행한다는 의미이다.

이 애너테이션이 있어야 스프링부트 프레임워크가 컨트롤러로 인식한다.

 

hello 메서드에 적용된 @GetMapping("/hello") 애너테이션 -> http://localhost:8080/hello URL 요청이 발생하면 hello 메서드가 실행됨을 의미한다. 즉, /hello URL과 hello 메서드를 매핑하는 역할을 한다.

  • URL명과 메서드명은 동일할 필요는 없다. 즉 /hello URL일 때 메서드명을 hello가 아닌 hello2와 같이 해도 상관없다.
  • Get 방식의 URL 요청은 GetMapping을 사용하고 Post 방식의 URL 요청은 PostMapping을 사용한다.

 

@ResponseBody -> hello 메서드의 응답 결과가 문자열 그 자체임을 나타낸다.

hello 메서드는 "Hello World" 라는 문자열을 리턴하므로 출력으로 "Hello World" 문자열이 나갈 것이다.

나중에 공부하겠지만 응답 결과는 이처럼 단순한 문자열 보다는 HTML 파일과 같은 템플릿을 주로 사용한다.

 

 

 

2. 로컬 서버 실행하기

 

이제 작성한 HelloController가 정상 동작하는지 확인해 보자. HelloController의 동작을 확인하기 위해서는 로컬서버를 실행해야 한다. 로컬서버는 다음과 같은 순서로 실행한다.

  1. 먼저 위 그림의 좌측 하단에 Boot Dashboard가 보이지 않는다면 STS 상단의 툴바에서 "Boot Dashboard" 아이콘을 눌러서 실행한다.
  2. Boot Dashboard에서 local 을 한번 누르면 그림처럼 "sbb" 라는 프로젝트명이 보인다. 여기서 "sbb"를 마우스로 선택하자.
  3. "sbb"를 선택하면 로컬서버를 실행할 수 있는 버튼들이 보인다. 가장 좌측의 버튼을 눌러서 서버를 실행한다.

혹시 다음과 같이 뜬다면 포트를 바꿔주어야한다.

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

나는 8080이 아니라 8181을 쓰겠다고 알려주는 것이다.

위의 순서대로 다시 진행하면 로컬서버가 실행되고 STS 콘솔창에 다음과 같은 메시지들이 출력될 것이다.

 

 

 

3. 브라우저로 확인하기

서버가 실행되었으니 이제 HelloController의 동작을 확인해 보자.

브라우저를 실행하고 주소창에 http://localhost:8181/hello라고 입력해 보자.

 

 

위와 같이 /hello URL이 요청되면 컨트롤러인 HelloController의 hello 메서드와 매핑된 hello 메서드가 호출되고 "Hello World"라는 문자열이 브라우저에 출력되는 것을 확인할 수 있다.

 

 

728x90
반응형