AngelPlayer`s Diary

스프링 웹 개발 기초

정적 컨텐츠 : 파일을 그대로 웹 브라우저에 출력

MVC & 템플릿 엔진 : 서버에서 HTML을 동적으로 처리하여 출력

API : JSON 데이터 포맷으로 클라이언트에게 전달 (데이터 전송 시)

 

 

정적 컨텐츠 로직

1. 웹 브라우저에서 요청 (../hello-static.html)

2. 톰켓 버서가 요청을 받음

3. 스프링 컨테이너 쪽에서 관련 컨트롤러 찾음 (hello-static 컨트롤러 찾음)

4. 컨트롤러가 없는 경우 정적 파일을 찾음 (static/hello-static.html 찾음)

 

 

MVC & 템플릿 엔진

MVC : Model, View, Controller

 

View : 화면을 그리는 역할

Model, Controller : 비즈니스 로직, 내부적 처리 역할

 

@RequestParam() : get 방식을 통해서 값을 받아옴

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

위와 같이 코드를 작성했을 때 웹 브라우저에서는 

 

http://localhost:8080/hello-mvc?name=spring!!!!

?name을 통해 값을 전달할 수 있고, 전달된 값은 변수 String name에 저장됨

 

동적일 때는 viewResolver가 렌더링하여 변환 후 html을 반환

 

 

API

view 없이 데이터가 그대로 내려간다.

 

- 단순 문자열을 넘김

@GetMapping("hello-string")
@ResponseBody // http의 body 부분에 return 데이터를 직접 넣어주겠다
public String helloString(@RequestParam("name") String name) {
    return "Hello" + name;
}

 

- 데이터를 넘김 (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;
    }
}

 

json : key : value 방식의 단순한 데이터 방식

스프링에서 객체를 반환하고 responseBody를 사용하면 json을 기본으로 반환함

 

 

@responseBody가 없으면 viewResolver로 전달

@responseBody가 있으면 http응답에 바로 응답 (HttpMessageConverter)

-> 문자열은 그대로, 객체는 json 방식으로 데이터를 보냄

 

 

 

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band