ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹의 기초
    스프링 2022. 12. 19. 17:35
    • 정적컨텐츠
      Welcome page와 같이 서버에서 하는것 없이 파일을 그래도 웹브라우저에 내려준다.
    • MVC, 템플릿엔진
      파일을 그래도 내려주는 것이 아니라, 서버에서 프로그래밍을해서 html을 동적으로 내려준다.
    • API
      데이터 구조 포멧으로, 데이터를 전달하는 방식.

    정적 컨텐츠

    Welcome page와 같이 서버에서 하는것 없이 파일을 그래도 웹브라우저에 내려준다.
    resorces/static 폴더에 자신이 원하는 html파일을 넣으면, 이 파일을 그래도 내려준다.
    단, 어떤 프로그래밍을 할 수 없다.

    내장 톰캣서버가 요청을 받는다. 이를 스프링에게 넘기고, 스프링은 먼저 controller에서 hello-static을 찾아보게 된다. 해당 controller가 없으면, 내부의 아까 언급한 폴더의 파일을 찾아서 반환을 해준다.

    MVC, 템플릿엔진

    • View

    화면을 그리는데 역량을 집중해야 한다.

    • Contoller

    비즈니스 로직과 관련이 있거나, 내부적인 것을 처리하는데 집중해야 한다.

    따라서 화면과 관련된것들는 view, 비즈니스로직이나 서버와 관련된 것들은 controller나 서버 뒤에서 처리를하고, model에 화면에 필요한 것들을 담아서 넘겨준다.

     

    @GetMapping("hello-mvc")
        public String helloMvc(@RequestParam(name = "name") String name, Model model){
            model.addAttribute("name", name);
            return "hello-template";
        }
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Hello</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <p th:text="'안녕하세요. ' + ${name}">hello! empty</p>
    </body>
    </html>

    name을 spring으로 입력을 했다. 따라서 name이 spring으로 바뀌게 되고 value도 spring으로 바뀐다. 결과적으로 html의 name자리가 spring으로 바뀌게 된다.

    API

    데이터를 바로 내린다.

    @GetMapping("hello-string")
        @ResponseBody//
        public String helloString(@RequestParam("name") String name){
            return "hello" + name;//name이 spring이면, hellospring
        }

    ReponseBody: html body부분을 내가 직접 넣어주겠다는 의미.

    실행 시켜보면 해당 문자열이 소스에 바로 들어가게 된다.

    hello-api를 요청받고, 톰캣은 스프링에 이정보를 넘겨준다. 스프링은 controller에 hello-api를 가지고 있고, @ResponseBody가 붙어있기 때문에 이 데이터를 그대로 넘기는 방식으로 동작한다. 이때 HttpMessageConverter가 동작하게 된다. 문자면 String Converter가 동작하고, 객체면 Json Converter가 동작하게 된다.

    728x90

    '스프링' 카테고리의 다른 글

    싱글톤 컨테이너  (0) 2022.12.22
    IOC,DI,컨테이너  (0) 2022.12.19
    빈 등록  (0) 2022.12.19
    의존관계에 대한 이해  (0) 2022.12.19
    동작과정  (0) 2022.12.19

    댓글

Designed by Tistory.