Spring 강의정리 - 2

래림·2023년 9월 23일
0

springboot

목록 보기
2/2

Spring 공부하면서 그 내용을 정리하려고 합니다.
인프런 스프링 입문 - 코드로배우는 스프링부트, 웹 MVC, DB접근기술 강의를 참고했습니다.

스프링 웹 개발 기초

정적콘텐츠 static

서버에서 html을 그대로 웹 브라우저에 전달해주는것

MVC와 템플릿 엔진

서버에서 html을 동적으로 바꿔서 브라우저에 전달해주는것

controller: 비즈니스 관련 로직처리
view: 보여지는 화면 그림

API

json 데이터 구조 포맷으로 클라이언트에게 데이터 전달
화면은 클라이언트가 알아서 그린다. 서버끼리 통신할 때도 사용.

예제코드

package hello.hellospring.controller;

import org.springframework.ui.Model;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data","spring!!");
        return "hello"; // resources/templates/hello.html과 같다.
    }

    // mvc방식
    @GetMapping("hello-mvc")// http://localhost:8080/hello-mvc?name=spring!!!!
                            //결과 : hello spring!!!! -> 브라우저에서 소스보기를 하면, html에 서버로부터 전달된 name부분이 뜬다.
                            // view라는 템플릿이 있는 상황에서 그걸 조작하는 방식.

    // @ResponseBody가 없으면,  viewResolver한테 던진다.
    public String helloMvc(@RequestParam("name") String name,Model model){
        model.addAttribute("name",name);
        return "hello-template";
    }

    // api방식
    @GetMapping("hello-string") // http://localhost:8080/hello-string?name=spring!!!!
                                // 결과 : hello spring!!!! -> 브라우저에서 소스보기 하면, 그냥 hello spring!!!!텍스트 자체가 뜬다.
    @ResponseBody // 이게 있으면 데이터를 이대로 넘긴다. 문자열이 아니고 객체면, json으로 넘긴다.
    public String helloString(@RequestParam("name") String name){
        return "hello "+name;
    }

    @GetMapping("hello-api") // http://localhost:8080/hello-api?name=spring!!!!
                             // 결과 : {"name":"spring!!!!"} -> 브라우저에서 소스보기 하면, json형태로 뜬다.
    @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;
        }
    }
}

0개의 댓글