Study Record

[Spring] 웹 개발 기초 본문

Spring

[Spring] 웹 개발 기초

초코초코초코 2022. 6. 5. 15:37
728x90

✍ 정적 컨텐츠(파일을 그대로 웹 브라우저에 내려주는 방법)

Spring Boot Features - Static Content

 

Spring Boot Features

Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closing the application context and is performed in the earliest

docs.spring.io

파일을 그대로 웹 브라우저에 내려주는 방식이다.

 

[예시] resources/static 디렉터리에 html 파일을 만든다. (hello-static.html)

웹 브라우저에서 http://localhost:8080/hello-static.html 에 접속하면,

① hello-static 과 관련된 컨테이너가 있는지 확인한다.

② static 디렉터리의 hello-static 이름을 가진 html 파일을 확인한다.

이러한 순서로 처리하게 된다. 따라서 hello-static 과 관련된 컨테이너가 없으므로 hello-static.html 파일을 서버에서 내려주게 된다.

 

✍ MVC 와 템플릿 엔진 (html 을 그대로 내려주는 게 아니라 서버에서 변형하여 내려준다.)

M(Model) V(View) C(Controller)

웹 개발할 때, 화면만 집중해서 그리는 View 와 나머지 비즈니스 로직을 처리하는 부분(Controller, Model)을 나눠 개발한다. View 하나에 DB 접근하고 Controller 로직도 처리하고 하면 유지 보수하기 어렵기 때문에 MVC 로 쪼개서 개발한다.

 

[예시]

① Controller 를 생성한다.

@Controller
public class HelloController {

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name", required = false) String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
}

@RequestParam(value = "name", required = false) 

- request 파라미터를 받는다. 변수 이름은 name 이며 required 는 false 이므로 파라미터가 없어도 된다.

 

② View 를 생성한다. [resources/temlates]

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

 

 

③ http://localhost:8080/hello-mvc?name=kim 으로 접속해본다.

[실행 과정]

http://localhost:8080/hello-mvc?name=kim 로 요청이 들어오면 관련 컨테이너가 있는지 찾는다.

② hello-mvc 매핑이 된 컨테이너를 찾고 helloMvc 함수를 실행한다.

③ viewResolver 가 helloMvc 함수의 리턴 값인 hello-template 이름과 매핑된 파일을 찾아 처리 후 html 파일을 웹 브라우저에 보낸다. (resources:templates/hello-template.html)

 

 

✍ API

주로 앱 개발(클리아언트)과 관련된 작업을 할 때 주로 사용하는 방식(JSON 데이터를 주고받는다.)이다. 

 

[예시]

# Controller

@Controller
public class HelloController {

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

    @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;}
    }
}

@ResponseBody : HTTP의 BODY에 문자 내용을 직접 반환한다.

 

※ Spring 은 컨트롤러에서 리터값으로 객체를 반환하면 자동으로 JSON 형식으로 바꿔 반환해준다.

주로, hello-string 은 String 을 그대로 넘겨주는 것보다 객체를 이용해 JSON 형식으로 반환하는 방식을 사용한다.

 

 

 

728x90

'Spring' 카테고리의 다른 글

[Spring] 기본 정리  (0) 2022.06.05
[Spring] 빌드하기  (0) 2022.06.05
[Spring] Welcome Page, GetMaping  (0) 2022.06.05
[Spring] 프로젝트 생성하기  (0) 2022.06.05