스프링 입문 - 스프링 웹 개발 기초 #2

컬러·2021년 1월 17일
0

Spring

목록 보기
2/7

스프링 웹 개발 기초

정적 컨텐츠

  • 스프링 부트는 정적 컨텐츠를 제공한다.
  • 파일을 그대로 내려준다!

MVC와 템플릿 엔진

  • MVC란? Model, View, Controller

이 전에는 JSP로 모든 것을 통합하여 하였지만 (Model 1방식) 현재는 각각 나누어서 작성하고있다.

1. 웹 브라우저는 내장 톰캣 서버로 localhost:8080/hello-mvc를 요청
2. 내장 톰캣 서버는 스프링 컨테이너에게 hello-mvc를 넘김
3. 스프링 컨테이너는 HelloControllerGetMapping 되어있는 hello-mvc를 찾음
4. key = name, value = spring 값을 model(name:spring) 에 담아 return 함
5. viewResolver는 리턴된 string name과 똑같은 name을 찾아서 Thymeleaf 템플릿 엔진에게 처리해달라고 요청을 해달라고 넘김
6. 템플릿 엔진은 변환을 한 HTML을 웹 브라우저로 넘김

API

  • @ResponseBody 를 사용하면 뷰 리졸버 ( viewResolver )를 사용하지 않음

  • view 부분 없이 처리된다.

@GetMapping("hello-string")
@ResponseBody // HTTP body 부분에 return 으로 넘어가는 부분을 직접 넣겠다는 의미이다.
public String helloString(@RequestParam("name") String name) {
  return "hello" + name; // "hello spring"
}

→ 페이지 소스보기를 하면 HTML 소스 부분이 없이 그대로 넘어온다.

  • JSON 형식
@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에 문자 내용을 직접 반환
    • viewResolver 대신에 HttpMessageConverter 가 동작
    • 기본 문자처리: StringHttpMessageConverter
    • 기본 객체처리: MappingJackson2HttpMessageConverter
    • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음

0개의 댓글

관련 채용 정보