티스토리 뷰

Spring/Spring Basic

Spring Basic : 스프링 학습 1

Korean Eagle 2021. 12. 6. 11:29
728x90

처음 스프링을 접하는 사람에게 스프링의 사상과 근본적인 학습에 관한 내용을 핵심만 추려 작성하려고 하였지만 너무 길어질 것 같아서... 계속 정리할지는 모르겠다.

서블릿의 구조를 이해하고 서블릿의 어떤 문제점을 스프링이 해결하려 했는지 등을 쓰고 싶었다. 핵심적인 것을 알만 나머지는 따라 오기 때문인데 솔직히 핵심적인 것이 너무나 많다.

 

1. 스프링이 어려운 이유 - 대부분 스프링을 웹개발용도로 사용하는데 스프링을 알아도 Servlet을 모르면 어려운 게 당연하다.

 

2. 스프링 web 기반은 Servlet이다. Servlet을 이해하고 어떻게 스프링 web이 Servlet을 편리하게 사용할 수 있게 만들어 주었는지 알면 스프링의 어려움도 대부분 해소된다.

 

3. Servlet을 이해한다고 해도 Servlet이 처리하는 HTTP 프로토콜에 대해서 모르면 같은 문제가 발생한다.

 

4. Http는 보낼 때 사용하는 Request, 받을 때 사용하는 Response로 구성되고, 구조적으로 3부분으로 나누어 진다.

  4-1 Status Line - 보낼 때는 어디에다 어떤 명령을 할지, 받을 때는 어떻게 명령이 처리되었는지에 대한 정보를 가진다.

  4-2 Header - Request, Response의 Body를 어떻게 해석할지에 대한 정보를 제공한다.

  4-3 Body - 데이터를 담고 있다. 이 부분을 해석하는 것은 주로 Header의 Content-Type에 의존한다.

 

5. Header의 Content-Type 중에 가장 많이 사용하고 기억해야 할 3가지 타입이 있다.

  5-1 application/x-www-form-urlencoded - Body에 key/value 행태로 데이터를 저장한다. 

  5-2 multipart/form-data - Body에 다양한 형태의 데이터를 실어서 보낼 수 있다. 보통 첨부파일 보낼 때 사용한다.

  5-3 application/json - 이건 REST에서 많이 사용한다.

 

 

 

상세

----------------------------

 

1. 서블릿을 이해하기 위해서는 HTTP 프로토콜을 이해해야 한다. 서블릿 역시 단순한 구조를 가졌고, HTTP 프로토콜 역시 엄청 단순하다. 문제는 3가지가 짬뽕이 되면 아무리 쉬운 재료라도 복잡해 보일 수 밖에 없다.

 

2. HTTP 프로토콜은 아주 단순한 규약이다. HTTP 프로토콜을 이해하려면 TCP/IP를 이해해야 하고 TCP/IP를 이해하려면 MAC과 APR를 알아야 하지만, 스프링 웹개발을 위해서는 그냥 HTTP만 알아도 된다.

 

  2-1 위의 그림이 HTTP 프로토콜의 전부이다. HTTP는 Request와 Response로 구분된다. 보내는 건 Request, 받는 건 Response 다.

 

3. HTTP Request를 세부적으로 알아보자.

  3-1 Request에서 아래의 그림은 반드시 기억해야 할 부분이다. 딱  3개 Requst Line, Headers,  Body.

  3-2 또 하나 기억할 건 헤더와 바디 사이에 빈줄 하나가 들어간다.

 

 

  3-3 Request Line은 호출 주소이다. 어떤 명령어를 어디로 보내라는 부분이다. 필수 항목. 이것만 있어도 동작한다.

    3-3-1 명령은 Get, Post 같은 걸 말하고 어디는 자원의 위치 URI가 들어가게 된다.

  3-4 Headers는 현재 요청을 이해하기 위해서 보내는 참고자료이다. 중요한 것은 Content-Type 정도이다.

    3-4-1 Content-Type은 명령에 포함된 데이터가 어떤 데이터인지 알려 준다.

    3-4-2 일반적으로 Content-Type에서 중요한 부분은 application/x-www-form-urlencoded 와 multipart/form-data

    3-4-3 application/x-www-form-urlencoded는 Body에 key/value 형태로 데이터를 담는다. 기본값이라 볼 수 있다.

    3-4-4 multipart/form-data  그냥 여러 종류의 Content-Type을 한번에 보낸다고 생각하면 끝이다.

      3-4-4-1 아래에 WebKitForm 뭐시기로 구분된 여러 개의 데이터 구역이 있는데 이게 영어로 multi parts 이다.

      3-4-4-2 보통은 첨부파일이 있는 페이지를 전송할 때 많이 쓴다. 파일과 form을 같이 보내기 위해서이다.

 

    

  3-5 Body는 명령에 담긴 데이터이다. 예를 들면 파일 내용을 첨부할 수도 있고  Form 데이터를 담을 수도 있다.

    3-5-1  이 Body에 담긴 데이터를 어떻게 이해할지를 알려주는 것이 Content-Type이다.

 

  3-6 정리하면 첫줄에 어떤 명령으로 어디에다 호출하는지 그리고, 바디 내용을 해석하기 위한 Header 정보, 보내는 데이터인 Body가 있다는 것만 알면 된다.

 

728x90
댓글