SpringBoot - 개발 방식

  • ctr + p 누르면 파라메터 정보 볼 수 있음. 유용한 기능.

세 가지 웹 컨텐츠 개발 방식

1. 정적 컨텐츠(Static Content) - 일반적인 HTML 방식. 단순히 html을 보내줌. 프로그램을 단순히 고객에게 전달해줌. MVC패턴은 서버에서 HTML파일을 가공해서 전달.

정적 컨텐츠 위치 : main > resources > static

2. MVC와 템플릿 엔진(JSP,PHP..) - 내부적으로 프로그래밍을 하여서 동적으로 웹 페이지를 만듬. 이 방법을 요즘엔 많이 사용.

MVC => Model, View, Contoroller.
과거엔 view, controller을 나누지 않는 model1 방식이었는데 요즘은 나누는 model2 방식을 선호하는 중. 이렇게 비지니스 로직을 나눠줘야지 유지 보수도 편하고 디자이너의 불필요한 데이터 간섭도 줄일 수 있음. 뷰에서 화면 구현. 컨트롤러에서는 서버와 관련된 컨트롤러에서 처리하고 처리된 데이터를 모델이 뷰에게 넘겨줌.

컨트롤러 예시.

@GetMapping("hello-mvc") //매핑 이름.
    public String helloMvc(@RequestParam("name") String name, Model model) {  //requestparam 메소드를 통해 값 받아오기
    //Model model의 경우는 컨트롤러의 역할을 생각해보자. 
    //컨트롤러는 모델을 통해 view에게 데이터를 넘겨줌. 
    //즉 여기서 매개변수로 모델을 주는 이유는 모델을 통해 뷰로 데이터를 넘겨준다는 의미.
        model.addAttribute("name", name); //받아온 값을 키 값이 name인 값으로 넣어주기.
        return "hello-template"; //해당 이름의 html을 불러오기.
    }

실행할 경우 request 메소드에서 name값을 받은적이 없기 때문에 에러 발생. 그래서 임의적으로 값을 넣어줌
http://localhost:8080/hello-mvc?name=spring!!gg

mvc 패턴 흐름

인터넷 창에 값을 치면 우선 컨트롤러에서 매핑된 값이 있는지 확인하고 없으면 정적 컨텐츠를 찾음. 여기선 컨트롤러에 매핑된 값이 존재하니 해당 메소드 호출 하는 식으로 html을 불러왔고 템플릿 엔진을 통해 html을 변환하여 웹 브라우저에 던져줌.

3. API - 안드로이드의 경우 JSON 포맷으로 데이터를 건내주는데 이러한 방법. 혹은 서버간에 데이터만을(HTML 제외) 주고 받는 방식.

@GetMapping("hello-string")
    @ResponseBody //html말고 http에는 header 와 body가 있는데 http의 body에 직접 데이터를 주겠단 의미.
    public String helloString(@RequestParam("name") String name) {
        return "hello" + name; //템플릿 엔진과 차이점이라면 api는 view 그런게 없이 여기 data가 그대로 내려감.
    }

api 방식을 통해 만들어진 웹 페이지의 소스 보기 화면.

html 요소가 하나도 없는 것을 볼 수 있음.

하지만 단순한 문자열을 줄 때만 API를 쓰지 않고 데이터를 줄 때 진가가 발휘됨.

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello; // api의 경우에는 html파일 찾는게 아니라 return값을 그대로 줌. 여기선 객체를 반환중
    }

    static class Hello { //자바 문법. 하나의 클래스에서 메소드를 여러 곳에서 사용하고자 할때 만드는 그 static 메소드
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

json 방식(key, value)으로 값이 들어가는 것을 볼 수 있음.

출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

좋은 웹페이지 즐겨찾기