[Spring] 인프런 강의 필기 (1) - 스프링 웹 개발 기초

김재연·2022년 10월 12일
0

Spring Boot 공부

목록 보기
4/9
post-thumbnail

인프런 강의 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술


1. view 반환 후 템플릿 엔진 사용 (+파라미터 보내기)

src/main/java/web/GreetingController.java

@Controller
public class GreetingController {
    @GetMapping("/param")
    public String paramTest(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "param";
    }
}

src/main/resources/templates/param.html

<body>
    <p th:text="'hello ' + ${name}">hello! empty</p>
</body>

  • 템플릿 엔진 이미지 처리 과정

html로 변환 후 반환

➕ 정적 컨텐츠 이미지 처리 과정

그대로 반환


2. 문자열 그대로 반환

💡 이거 왜 쓰나 했더니 @Controller 클래스 하나 안에 컨트롤러를 여러개 만들고 싶은데 하나는 view 반환, 하나는 문자열(객체) 반환 ... 이런 식으로 반환하고 싶은 데이터들이 다를 때, 어노테이션을 @RestController를 붙일 게 아니라 문자열(객체)을 반환하고 싶은 컨트롤러에만 @ResponseBody를 붙여주면 된다. 지쿠와의 집단지성

src/main/java/web/GreetingController.java

@Controller
public class GreetingController {
    @GetMapping("/string")
    @ResponseBody // <- http의 응답 body에 데이터를 직접 넣겠다.
    public String stringTest(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello " + name;
    }
}

  • 페이지 소스보기를 했을 때 view 반환과 문자열 반환의 차이점


3. 객체 반환

@Controller
public class GreetingController {
    @GetMapping("/api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }
    
    static class Hello {
        private String name; // 외부에서 접근 x => 라이브러리나 아래 메소드를 통해 접근

        public String getName() {
            return name;
        }

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

profile
일기장같은 공부기록📝

0개의 댓글