[SpringBoot] 프로젝트 생성 및 컨트롤러 기초 개념

[SpringBoot] 프로젝트 생성 및 컨트롤러 기초 개념

1.Spring Boot Project 생성 및 실행

Spring 구성

위의 구성으로 프로젝트를 만들고 압축을 해제 한 후, intelliJ를 사용해서 오픈했다.

gradle폴더는 말 그대로 gradle 설정 등에 관한 정보들을 다루기 위한 폴더

src를 보면 main과 test 폴더로 나누어져 있다.

main>java 에는 실제 package 및 소스 코드

main>resources는 실제 자바 코드를 제외한 html,xml등의 파일들이 있다.(그냥 자바 코드를 제외하면 모두 resources에 있다고 봐도 무방)

test 폴더에는 테스트와 관련된 소스코드들이 들어감

+) spring boot는 자동으로 .gitignore을 생성함

main>java>hello.boardspring>BoardSpringApplication에 들어가면 BoardSpringApplication 안에 main함수가 이미 선언되어 있다.(java는 반드시 클래스가 필요)

따라서 해당 main함수를 실행하면 위의 그림 하단과 같이 TomcatWebServer가 실행된다.

(main메서드를 실행하면 main함수의 파라미터에 있는 BoardSpringApplication이 SpringApplication 어노테이션을 통해 실행됨)

그리고 위의 그림에는 잘렸지만 하단에 표시한 저 부분에 포트가 8080이라고 뜬다.

따라서 localhost:8080에 접속해서

위의 사진과 같은 에러 페이지가 뜨면 일단 성공이다.(지금 따로 라우터 처리나 이런 거를 하나도 해주지 않은 상태이므로)

+)더 빠른 실행을 위해 gradle을 통해 실행하지 않고 intellij IDEA를 통해 실행할 수 있도록 setting을 바꾼다

전)

후)

+) 그리고 나는 Grdle JVM 부분도 일단 11로 바꾸어주었다. (spring boot 프로젝트 시작할 때 java 11로 해주어서 )

2.Welcome Page 만들기

resources/static/index.html

resources/static은 정적 페이지들이 모아져 있음

특히 static/index.html을 웰컴 페이지로 제공한다. (파일명 자체가 index.html이 되어야 한다)

<!--resources/static/index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>WELCOME</title>
</head>
<body>
WELCOME!
<a href="/hello">hello</a>
</body>
</html>

*템플릿 엔진을 통해 페이지 생성

그런데 위의 웰컴페이지는 그냥 단순 html 파일을 spring boot에 던져준 것뿐

html 파일을 템플릿 엔진을 통해 만들어본다.(여기서는 thymeleaf 사용)

우선 hello.boardspring 아래에 controller라는 패키지를 하나 생성한다.

웹 어플리케이션에서 첫 번째 진입점이 바로 controller다.

Controller란?

  • Controller에 대해 간단히 말하자면 MVC에서 C에 해당 하며 주로 사용자의 요청을 처리 한 후 지정된 뷰에 ”모델 객체를 넘겨주는 역할”을 한다.

Controller 관련 대표적인 Annotation을 알아보자

@Controller

  • Controller의 역할을 수행 한다고 명시(해당 클래스를 Controller로 사용한다고 Spring FrameWork에 알린다.)

필요한 비즈니스 로직을 호출하여 전달할 모델(Model)과 이동할 뷰(View) 정보를 DispatherServlet에 반환 한다.

  • Bean으로 등록한다

@Component의 구체화 된 어노테이션

출처:

https://goddaehee.tistory.com/203

[갓대희의 작은공간]


package hello.boardspring.controller;

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

@Controller
public class HelloController {
    // /hello 로 들어왔을 때
    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data","hello!"); 
				//아래의 hello.html의${data}부분을 hello!라는 단어로 대체한다는 의미 
        return "hello"; //src>main>resources>templates의 hello.html을 의미
    }

!!실행시에 spring boot가 파라미터인 model를 자동으로 넣어줌!

컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다.
resources:templates/ +{ViewName}+ .html

즉 순서대로 설명하자면

사용자가 ‘localhost:8080/hello’를 입력→컨트롤러에서 GetMappring(”hello”)를 찾음→ 해당 함수인 hello를 실행→ spring boot에서 파라미터로 model 객체를 자동으로 넘겨줌→spring boot로부터 넘겨받은 model 객체의 data라는 키에 hello!라는 value를 담음→ 그리고 그 model 객체를 return의 hello.html 로 넘겨줌 → hello.html 은 전달받은 model객체를 바탕으로 렌더링함

좋은 웹페이지 즐겨찾기