본문 바로가기

개발언어/Java _ Spring

스프링 입문 _ 섹션2. 스프링 웹 개발 기초

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/dashboard

 

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

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

www.inflearn.com

섹션2. 스프링 웹 개발 기초

 

1) 정적 컨텐츠

스프링 부트 정적 컨텐츠 기능

프로젝트 resources/static/hello-static.html

html파일을 생성하여 url을 통해서 접근 한다.

 

실행
http://localhost:8080/hello-static.html

 

 

먼저 웹브라우저에서 hello-static을 Controller에서 찾는다. 

하지만 지금의 경우는 관련 컨트롤러가 없으므로 톰캣서버는

차순위로  resources 폴더내에서 hello-static.html 파일을 찾아 반환한다.

 

 


2) MVC와 템플릿 엔진

 MVC : Model, View, Controller

프로그램을 개발할때 역할과 책임을 분리해야 한다.

View : 화면을 그리는데 모든 역량을 집중한 단

Controller : 비지니스로직이나 내부적인것을 처리하는 역할

 

타임리프의 장점 : html을 그대로 쓰고 서버없이 열어봐도 코드를 확인할 수 있다. 

 

C:\Users\ASUS\Desktop\강의\hello-spring\src\main\java\hello\hellospring\controller\HelloController.java

	// hello-mvc라는 매핑값으로 접근할 수 있다. ( http://localhost:8080/hello-mvc )
    @GetMapping("hello-mvc")
    // name1이라는 키로 값을 받는다 디폴트는 required = true// false의 경우 value를 생략가능하다
    // 생략할 경우 value는 null로 표기된다.
    public String helloMvc(@RequestParam(value = "name1", required = true) String name1, Model model){
       	// name1 = value 로 값을 지정한다면, 지역변수로서, 활용가능하고 addAttribute인수로 활용
        // value객체를 namet 이름으로 추가한다. 뷰 코드에서 namet으로 지정한 이름을 통해 value를 사용
        model.addAttribute("namet", name1);

        // hello-template.html파일로 내용을 반환한다
        return "hello-template";
    }

 

 

 

 

C:\Users\ASUS\Desktop\강의\hello-spring\src\main\resources\templates\hello-template.html

 

<html xmlns:th="http://www.thymeleaf.org">
<body>
// Model addAttribute(String name, Object value)로 지정된 value가 ${name}의 값으로 들어간다
<p th:text="'hello ' + ${namet}">hello! empty</p>
</body>

 

 

 


3) API

- @ResponseBody 를 이용하여  받은 value값을 문자열이나 객체(JSON)형태로 반환한다. 

3_1) @ResponseBody 문자 반환 

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

 

MVC때와는 달리 코드가 노출되지 않는다.

 

 

3_2) @ResponseBody 객체 반환

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

객체를 반환하는 Api 형태

 

 

 

@ResponseBody 사용 원리

  • @HTTP의 BODY에 문자 내용을 직접 반환
  •  viewResolver 대신에 HttpMessageConverter가 동작
  • 기본 문자 처리 : StringHttpMessageConverter
  • 기본 객체 처리 : MappingJackson2HttpMessageConverter
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음