Spring - Web dev basic

iseon_u·2022년 5월 21일
0

Spring

목록 보기
4/33
post-thumbnail

Web dev basic 스프링 웹 개발 기초


  • 정적 컨텐츠 - HTML
  • MVC 와 템플릿 엔진 - Model View Controller
  • API - json

정적 컨텐츠

recources/static/hello-static.html

정적 컨텐츠 이미지

  1. 내장 톰켓 서버가 요청을 받고 스프링으로 넘긴다.
  2. 스프링에서는 컨트롤러 쪽에 hello-static 관련 컨트롤러가 있는지 찾아본다. (컨트롤러 우선)
  3. 만약 컨트롤러가 없다면 resources/static/hello-static.html 을 찾아서 반환한다.

MVC 와 템플릿 엔진

  • MVC : Model, View, Controller
  • JSP : Model 1 방식 (View 위주)

Controller

  • URL이 추가되면 그에 상응하는 Controller 추가
@Controller
public class HelloController {

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
}
💡 Parameter Info 단축키 | IntelliJ : `Command` + `P`, Eclipse : `Ctrl` + `Shift` + `Space`

View

resources/template/hello-template.html

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
  • 템플릿 엔진이 작동되면

    태그 안쪽 내용은 text=”” 안쪽 내용과 치환 된다. (서버 없이 내용 확인용)

실행

MVC 템플릿 엔진 이미지

API

@ResponseBody

  • HTTP 통신 프로토콜 - Body 부에 리턴 데이터를 직접 넣어준다는 의미

JSON vs. XML

  • JSON 이 기본

@ResponseBody 문자 반환

@Controller
public class HelloController {

		@GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {
        return "hello " + name;
    }

}

@ResponseBody 객체 반환

@Controller
public class HelloController {		

		@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 (객체를 JSON 으로 변환하는 라이브러리 Jackson)
    • byte 처리 등등 기타 여러 HttpMessageConverter 가 기본으로 등록되어 있다.

클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보툴을 조합해서 HttpMessageConverter 가 선택된다.

💡 IntelliJ 생성 단축키 : Command + N , Ctrl + Enter (getter / setter)

profile
🧑🏻‍💻 Hello World!

0개의 댓글