코딩성장스토리

spring 도전기 본문

백 엔드/spring

spring 도전기

까르르꿍꿍 2021. 12. 8. 14:14

김영한 선생님의 무료강의를 듣고 따라 해보며 배운 점들을 적어 보겠다.

https://github.com/MyunghyunNero/Spring-pratice

 

GitHub - MyunghyunNero/Spring-pratice

Contribute to MyunghyunNero/Spring-pratice development by creating an account on GitHub.

github.com

실습해본 코드들은 내 깃허브에 있다.

일단 가장 궁금했던 정적 컨텐츠와 MVC와 API에 대해서 정리해보겠따.

1.정적컨텐츠

정적 컨텐츠는 말그대로 있는 그대로 화면을 출력하는 것이다.

!DOCTYPE HTML>
<html>
<head>
    <title>static content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>

여기서 쓰인 코드 그래도 화면에 출력이 된다.

 

2.MVC 와 템플릿 엔진

MVC는(model.view,controller)의 약자이고 템플릿 엔진은 웹에서 호출받는 것을 동적으로 데이터를 반환하게 도와주는 것이다.

아래 코드가 controller에 적은 것이다.

설명하자면 웹에서 hello-mvc를 호출 받으면 거기서 요구 받은 name값을 hello-template에 보낸다(hello-template는 아래코드다) ##name 값 받는 것은 아래 나와있다.

@Controller
public class HelloController {
 @GetMapping("hello-mvc")
 public String helloMvc(@RequestParam("name") String name, Model model) {
 model.addAttribute("name", name);
 return "hello-template";
 }
}

이 밑에 있는 코드가 hello-template이고 여기에 있는 ${name}이 컨트롤러에서 받은 값으로 치환이 되면서 

웹으로 반환 되게 된다. 

즉 동적으로 페이지가 변하게 만들 수 있다.

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

위에 있는 사진이 결과 값이고 name값을 입력 받는 것은 URL을 보면 ?name=spring!이 있다

이처럼 name값을 입력 받는 것이고 그에 따라 페이지가 동적으로 바뀐다.

페이지 소스 코드를 보자

기존 HTML에서 name값만 바뀌며 나온다.

3.API

api또한 동적으로 변하게 할 수 있다. 여기서 MVC템플릿엔진과 차이점은 MVC는 반환값을 사이트로 해서 사이트를 따로 작성을 해야한다는 것이다. 그에 비해 API는 바로바로 적용이 가능하다.(이유는 BODY부로 바로 치환이 된다.)

코드를 보여주겠다.

@Controller
public class HelloController {
 @GetMapping("hello-string")
 @ResponseBody
 public String helloString(@RequestParam("name") String name) {
 return "hello " + name;
 }
}

이 코드가 전부이다 따로 html을 만들어 주지않고도 가능 하다.

이것만 보면 템플릿이랑 차이를 못 느낄 수도 있다. 확실하게 보여주기 위해 페이지 소스 코드를 보도록하자

놀랍게도 이게 전부다 BODY를 그냥 "hello"  + name 으로 치환 했기 때문이다. 

 

최근에는 api쓰는 방식으로 객체를 이용하는 것이다.

@Controller
public class HelloController {
 @GetMapping("hello-api")
 @ResponseBody
 public Hello helloApi(@RequestParam("name") String name) {
 Hello hello = new Hello();
 hello.setName(name);
 return hello;
 }
 static class Hello {
 private String name;
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 }
}

결과 코드는 저렇게 KEY:VALUE 값으로 나오게 된다.

그리고 이를 JSON 방식이라고 하고 요즘 쓰고있는 방식이라고 한다. 

아직 이거에 대해서는 잘 모르지만 알아두고 공부해보자

'백 엔드 > spring' 카테고리의 다른 글

스프링 빈 스코프  (0) 2022.02.20
스프링 의존관계 자동 주입  (0) 2022.02.17
스프링 컨포넌트스캔  (0) 2022.02.15
스프링 싱글톤  (0) 2022.02.15
스프링 IOC,DI,컨테이너  (0) 2022.02.14