스프링 입문(2) 스프링 웹 개발 기초

Jiseong Lee·2022년 4월 29일
0
post-thumbnail

스프링 웹 개발 기초

이번 강의에서는 웹 개발하는 방법을 크게 세가지로 나누고 정리해 보았다. 크게 정적 컨텐츠, MVC와 템플릿 엔진, API 방식이 있다.

정적 컨텐츠

  • 정적 컨텐츠는 서버에서 처리하는 것 없이, html 파일 그대로를 웹 브라우저에 전달한다.
  • 스프링 공식 문서 에 나와 있듯이, /resource/static 폴더 안의 html을 spring 내에서 읽어서 바로 띄워줄 수 있다.
  • http://localhost:8080/hello-static.html 로 접속하면 컨트롤러를 타지 않고 바로 hello-static.html을 띄워준다.

MVC 와 템플릿 엔진

  • 서버단에서 html을 동적으로 변경하여 웹 브라우저로 전달한다. 예를 들면 jsp

  • Model, View, Controller(MVC 패턴)

    • View 는 화면을 그리는 것에만 모든 역량을 집중해야 한다.
    • Controller 는 비즈니스 로직에 집중해야 한다.
  • 요즘의 개발 패턴이나, 이미 레거시하다.

  • controller 에서 ViewResolver로 던진다

  @GetMapping("hello-mvc") 
  public String helloMvc(@RequestParam("name") String name, Model model) {
    model.addAttribute("name", name); // hello-template.html에 name을 동적으로 넣어주고 웹 브라우저로 반환 
    return "hello-template"; 
  }

API

  • 안드로이드, IOS 등 개발 시 JSON 구조의 포맷으로 클라이언트에게 데이터를 전달한다.

  • Vue, React 등의 클라이언트 혹은 서버끼리 통신 시에도 사용된다.

  • @ResponseBody 가 붙어있다면 ViewResolver에게 보내지 않고 그대로 데이터를 return 한다. ( return 내용을 http body부에 직접 넣어줌)
  @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; 
      
      /*  getter setter 
      	java bean 표준 방식 or property 접근 방식 이라고 부름 
      */ 
      public String getName() { 
      	return name;
      } 
      public void setName(String name) { 
      	this.name = name; 
      } 
  }
  • return 값이 객체인 경우 Default가 JSON 방식이기 때문에 JSON 데이터로 변환하여 http 응답으로 return 한다.
    • 단순 문자인 경우 StringConverter(StringHttpMessageConverter) 동작, 객체인 경우 JsonConverter(MappingJackson2HttpMessageConverter) 가 동작한다.
      • 객체를 JSON으로 변환해주는 라이브러리는 크게 두가지(Jackson, Gson > spring 기본은 Jackson이다)
      • byte 처리 등, 기타 여러 HttpMessageConverter가 기본으로 등록되어 있다.

회고

이미 알고 있는 내용이지만 개념적으로 정리하는 시간이라서 좋았다. 빨리 완강하고 더 깊이있는 내용을 공부하고 싶다.

profile
안녕하세요

0개의 댓글