🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎

Spring

[Inflearn]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 2 (정적 컨텐츠, MVC와 템플릿 엔진, API)

JONG_UK 2023. 1. 3. 18:21
728x90
반응형
SMALL

Spring 입문 강의 정리노트

2. 스프링 웹 개발 기초 - 정적 콘텐츠, MVC와 템플릿 엔진, API

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

💡 앞의 내용을 보고 와주세요

 

[Inflearn]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 1 (프로젝트 생성)

Spring 입문 강의 정리노트 1. Spring Boot 프로젝트 만들기 [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애

jonguk.tistory.com

 

Controller 만들기

 

hellospring 내부에 controller 라는 패키지를 만들어주고 그 안에 HelloController.java 클래스를 만들어 준 다음 아래와 같이 작성한다.

 

Controller는 MVC 패턴에서 백엔드 작업을 하는 공간이다. 서버와 파라미터를 Get 또는 Post 메서드를 통해 통신하는 곳이라고 할 수 있다.

@GetMapping()은 일반적인 Get 호출과 동일하다고 할 수 있다. 아래 사진을 보면 localhost:8080/ 뒤에 hello라는 것을 @GetMapping("hello")에서 가져와 HTML URL 매핑을 해줬다는 뜻이다. localhost:8080/hello에 접속하게 되면 @GetMapping() 아래 함수가 실행된다. 

 

아직 위처럼 출력되지는 않을 것이다. 이제 templates를 만들어보자

Templates 작성

 

 

templates 디렉토리는 Chrome과 같은 브라우저에 출력되는 페이지를 만드는 곳이다.

우리는 Thymeleaf 라는 템플릿 엔진을 사용하기로 했기 때문에 아래 코드를 삽입해 준다.

<html xmlns:th="http://www.thymeleaf.org">

 

Thymeleaf 엔진은 HTML 태그 안에 사용되는데 우리가 Controller에서 전송한 데이터를 태그 사이에 있는 InnerHtml를 대체하여 출력할 수 있게 한다. 

${data}로 전달받은 데이터는 Controller에서 아래 코드에서 전달받은 것이다. return "hello"; 코드를 통하여 templates > hello.html 페이지가 실행되었다.

@GetMapping("hello")
public String hello(Model model) {
    model.addAttribute("data", "Spring!!!!!!!!!");
    return "hello";
}

 

API와 @RequestParam, @ResponseBody

 

 

 

AWS에서 정의하는 API

API는 무엇을 의미하나요?

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다. API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.

 

우리는 Client와 Server와 데이터를 주고받을 때 파라미터를 넘겨주거나 API를 만들어서 Json 형식의 데이터를 넘겨주는 경우가 많다. 

@GetMapping 아래에 @ResponseBody를 사용하여 전달받은 파라미터 값을 서버에서 대신 출력 해 줄 수 있기도 하다.

@ResponseBody는 Client에서 전달받은 파라미터 값을 담고 있으며 그 값을 Thymeleaf의 text에 대체하여 출력할 수 있다. 

API example2처럼 객체를 만들어서 전달하는 경우에는 Json 형식으로 값이 전달된다.

두 가지가 다른 이유

 

스프링 부트에서는 웹 브라우저에서 전송받은 데이터를 helloController에서 처리하는데 HttpMessageConverter라는 동작이 실행된다. 

객체를 반환할 때에는 JsonConverter가 변환하여 반환하고, 일반적인 String 문자열이 들어오면 StringConverter가 작동하여 반환하기 때문이다.

 

728x90
반응형
LIST