[백엔드 첫 걸음] 스프링 실습

khyojun·2022년 7월 1일
0

Spring 시작

목록 보기
3/15
post-thumbnail

스프링 실습

실습 git참고

시작은?

스프링 시작 홈에서 시작하여 환경들을 설정한 후 다운을 받아 실행하게 되었다.

다음 환경속에서 선택을 하는데 이전 글에서 포스팅했었었는데 Gradle Project의 장점이 많이 Gradle로 그리고 옆쪽 Dependencies는 Spring Web과 Thymeleaf 템플릿을 사용하기로 하였다.

*snapshot: 개발중인 버전이라는 뜻

1. 우선은 View 부터

📂main

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloSpringPracticeApplication {

	public static void main(String[] args) {

		SpringApplication.run(HelloSpringPracticeApplication.class, args);
	}

}

📂 resource/static/index.html

<!DOCTYPE html>
<html xmlns:th = "htttp://www.thmeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Practice</title>
    <meta http-equiv="content-type" content="text/html" charset="UTF-8">
</head>
<body>
<a href="/practice">연습 페이지입니다.</a>
</body>
</html>

간단히 spring을 이용하여 main을 실행시키게 된다면
localhost:8080을 주소창에 입력하게되면 자동적으로 index.html에 작성한것이 화면에 나오게 되는데...

이것에 대해서는 스프링 reference를 찾아보니 자동적으로

  1. static에 있는 index.html을 찾고
  2. 없으면 template에서 찾아보게 된다.

그래서 static에 있던 index.html이 출력이 되는 것이었다.

그러나 이렇게만 하면 너무 단조로운 정적 컨텐츠를 출력하는 용도밖에 되지 않으므로 이번엔 Controller를 활용해보기로 하였다.

Controller?

스프링에서는 HTTP 요청은 Controller에 의해 수행되어진다고 한다.
간단히 @Controller를 사용하여 진행이 되어지는데
@GetMapping 어노테이션을 통하여 HTTP GET으로 요청하여 안쪽에 있는 /practice 로 매핑하는 과정을 거친다.

📂 HelloPracticeController.java

package com.example.demo.hellospringcontroller;

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

import java.util.Optional;

@Controller
public class HelloPracticeController {

    @GetMapping("practice")
    public String Practice(Model model){ // Model 객체 : Controller에서 생성된 데이터를 담아서 View로 넘겨주는 객체
        model.addAttribute("data", "helloname");  
        return "practice";
    }
}

그 이후에는 model객체를 활용하여 template디렉토리에 있는 practice.html로 data를 보내준다.

📂 template/practice.html

<!DOCTYPE html>
<html xmlns:th = "htttp://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Practice</title>
    <meta http-equiv="content-type" content="text/html" charset="UTF-8">
</head>
<body>
        <p th:text="'연습용입니다.' + ${data}"></p>
</body>
</html>

이후 thymeleaf를 활용하여 아까 보내준 data안에 있는 value를 출력하는 문으로써

"연습용입니다.helloname"이 출력이 되어진다.

즉 localhost:8080/practice라는 것을 브라우저에서 요청을 하게 되면 다음의 과정을 거치게 된다는 것이다.

이후 글에서 계속..........



참고

김영한님 스프링 강의: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
https://spring.io/guides/gs/serving-web-content/

profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글