Spring/MVC

스프링 MVC 1편 (1) - 서블릿, HTTP 요청 & 응답

ummchicken 2022. 12. 22. 18:59

강의 : 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

 

내가 보려고 씀

 


 

섹션 1. 웹 애플리케이션 이해

서블릿 컨테이너

  • 서블릿 객체는 싱글톤으로 관리
    • 싱글톤? 객체를 딱 하나만 생성해놓고, 그걸 공유해서 쓰는 것. (2 ~3개 new로 생성하지 않음)
    • 왜 이렇게 사용할까? 요청이 다 다르기 때문.

 

 

자바 뷰 템플릿 역사

HTML을 편리하게 생성하는 뷰 기능
  • JSP
    • 속도 느림, 기능 부족
    • 요즘엔 애매함. 스프링부트에서 JSP를 권장하지 않음. 기능도 많이 부족함.
  • 타임리프(Thymeleaf)
    • 내추럴 템플릿 : HTML의 모양을 유지하면서 뷰 템플릿 적용 가능 (태그를 넣어서 문제를 해결)
    • 스프링 MVC와 강력한 기능 통합 (spring에서 밀고 있음)
    • 최선의 선택, 단 성능은 프리마커, 벨로시티가 더 빠름

 

 


 

섹션 2. 서블릿

0. HTTP 요청 데이터 - 개요

HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법

 

주로 다음 3가지 방법을 사용한다.

 

  1. GET - 쿼리 파라미터
    • /url?username=hello&age=20
    • 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
    • 예) 검색, 필터, 페이징등에서 많이 사용하는 방식
  2. POST - HTML Form
    • content-type: application/x-www-form-urlencoded
    • 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20
    • 예) 회원 가입, 상품 주문, HTML Form 사용
  3. HTTP message body에 데이터를 직접 담아서 요청
    • HTTP API에서 주로 사용, JSON, XML, TEXT
💡 데이터 형식은 주로 JSON 사용
☞ POST, PUT, PATCH

 

 

 

1. HTTP 요청 데이터 - GET 쿼리 파라미터

메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달
예) 검색, 필터, 페이징등에서 많이 사용하는 방식

 

쿼리 파라미터는 URL에 다음과 같이 ? 를 시작으로 보낼 수 있다. 

추가 파라미터는 & 로 구분하면 된다.

http://localhost:8080/request-param?username=hello&age=20

 

 

2. HTTP 요청 데이터 - POST HTML Form

메시지 바디에 쿼리 파리미터 형식으로 데이터를 전달
예) 회원 가입, 상품 주문 등에서 사용하는 방식
username=hello&age=20

 

 

3. HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트

HTTP message body에 데이터를 직접 담아서 요청
  • HTTP API에서 주로 사용, JSON, XML, TEXT
  • 데이터 형식은 주로 JSON 사용
  • POST, PUT, PATCH
 
 

2. HTTP 요청 데이터 - API 메시지 바디 - JSON

HTTP API에서 주로 사용하는 JSON 형식으로 데이터를 전달

 

 


 

섹션 3. 서블릿, JSP, MVC 패턴

※ Spring을 쓰면 싱글톤을 쓸 필요가 없다.
∵ 스프링 자체가 싱글톤을 보장.

설명 링크 : 
https://hongchangsub.com/springcore5/

 

 

템플릿 엔진이 나온 이유

자바 코드로 HTML을 만들어 내는 것 보다 
차라리 HTML 문서에 동적으로 변경해야 하는 부분만 자바 코드를 넣을 수 있다면 더 편리할 것이다.

템플릿 엔진을 사용하면 HTML 문서에서 필요한 곳만 코드를 적용해서 동적으로 변경할 수 있다.

템플릿 엔진에는 JSP, Thymeleaf, Freemarker, Velocity등이 있다.
 
 

서블릿과 JSP의 한계

코드를 잘 보면, JAVA 코드, 데이터를 조회하는 리포지토리 등등 다양한 코드가 모두 JSP에 노출되어 있다.
JSP가 너무 많은 역할을 한다.
 
 

MVC 패턴의 등장

비즈니스 로직은 서블릿 처럼 다른곳에서 처리하고, 
JSP는 목적에 맞게 HTML로 화면(View)을 그리는 일에 집중.

그래서 MVC 패턴이 등장했다.

 

 

'Spring > MVC' 카테고리의 다른 글

[Spring] MVC1 & MVC2, DispatcherServlet  (0) 2023.01.27
스프링 MVC 1편 (3) - MVC 기본 기능  (0) 2023.01.01
스프링 MVC 1편 (2) - MVC 패턴  (0) 2022.12.30