juuuding

[Section 2] 스프링 웹 개발 기초 본문

Spring/스프링 입문

[Section 2] 스프링 웹 개발 기초

jiuuu 2023. 3. 24. 01:39

 정적 컨텐츠

 

- 파일에 프로그래밍 같이 어떤 것을 하는 거 없이 그대로 넘겨주는 것

정적 컨텐츠 이미지

 

 

 

 MVC와 템플릿 엔진

 

MVC: Model View Controller

Model, Controller -> 내부 처리(서버 뒷단) 집중, business logic

View -> 화면을 그리는데 역량 집중

 

[Controller]

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

- @RequestParam은 parameter을 받는 것

 

[View]

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

- tymeleaf의 장점: 서버를 키지 않아도 html의 절대경로를 치면 껍데기 형태로 볼 수 있음

- ${name}: model에서 보낸 것을 치환하는 것

 

MVC, 템플릿 엔진 이미지

- viewResolver: 화면 관련 해결자. view를 찾아주고 template 엔진 연결

 

 

 

 API

 

[API]

[@ResponseBody 문자 반환]

@Controller
public class HelloController {

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

- @ResponseBody를 사용하면 viewResolver을 사용하지 않음.

- HTML의 body가 아닌 HTTP의 body 부에 직접 넣겠다는 의미

 

[@ResposeBody 객체 반환]

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

- @ResponseBody를 사용하고, 객체를 반환하면 객체가 JSON으로 변환됨

- return hello; -> 객체를 넘겨준 것

- JSON: [key : value] 로 이루어진 구조

* alt+insert -> getter setter 자동 삽입 가능 : JAVA bin 규약 property 접근 방식

 

@ResponseBody 사용 원리

- @ResponseBody 사용

 + HTTP의 BODY에 문자 내용을 직접 반환

 + viewResolver 대신에 HeepMessageConverter 동작

 + 기본 문자 처리: StringHttpMessageConverter

 + 기본 객체 처리:MappingJackson2HttpMessageConverter

 + byte 처리 등 기터 여러 HttpMessageConverter가 기본으로 등록되어 있음

 + default는 JSON 방식

'Spring > 스프링 입문' 카테고리의 다른 글

[Section 4] 스프링 빈과 의존관계  (0) 2023.03.25
[Section 3] 회원 관리  (0) 2023.03.25
[Section 1] 라이브러리 & View 환경 설정  (0) 2023.03.22