[Spring]HTTP 요청과 응답

안병욱·2022년 5월 7일
0

HTTP 프로토콜

HTTP는 Hyper Text Transfer Protocol의 약자로, 인터넷 상에서 데이터를 주고 받기 위한 약속, 규칙이다. 웹에서는 클라이언트(브라우저)와 서버간에 데이터를 주고 받기 위한 방식
으로 HTTP프로토콜을 사용한다. 이렇게 규칙을 정해두었기 때문에, 모든 프로그램이 이 규칙에 맞춰 개발함으로써 서로 정보를 교환할 수 있게 된다.
HTTP로 보낼 수 있는 데이터는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서, JSON형식 등 여러종류가 있으며 브라우저에서 요청하면 서버는 요청에 대한 내용을 처리하여 브라우저에 다시 응답해준다.

HTTP 프로토콜의 특징

단순하고 읽기 쉽다. - 텍스트 기반의 프로토콜
상태를 유지하지 않는다.(stateless) - 클라이언트의 정보를 저장하지 않는다.(이를 보완하기 위해 쿠키와 세션을 이용)
확장 가능하다. - 커스텀 헤더(header) 추가 가능

HTTP 메시지

HTTP의 요청과 응답을 보낼 때 사용되는 메시지 형태

클라이언트와 서버와의 요청과 응답을 이해하기 위해서는 먼저 클라이언트(Client)와 서버(Server)를 이해해야 한다.

클라이언트란 요청을 보내는 쪽을 의미하며 일반적으로 웹 관점에서는 브라우저를 의미하며, 서버란 요청을 받는 쪽을 의미하며 일반적으로 데이터를 보내주는 원격지의 컴퓨터를 의미한다.

웹 애플리케이션 서버 (WAS)

Web Server는 Web을 서비스해주며 WAS는 서버의 프로그램을 사용할 수 있도록 해주는 역할을 한다. 우리가 만든 프로그램을 클라이언트(브라우저)에서 원격호출 할 수 있는 이유가 WAS가 있기 때문이다.

WAS를 사용하는 이유

프로그램이 브라우저에 저장되어있을 경우 update에 문제가 생긴다. 해당 브라우저에서 업데이트 한 프로그램은 다른 브라우저에서는 업데이트가 적용되지 않기 때문이다. 하지만 서버에 프로그램이 설치되어있다면 서버한 곳만 update하면 모든 브라우저에서 동일하게 프로그램을 사용할 수 있다. 즉, update에 용이하기 때문에 WAS를 사용한다.

Spring에서의 HTTP 요청과 응답

HttpServletRequest
브라우저에서 서버로 요청할 때 데이터를 담아서 요청 할 수 있다. 이 때 톰캣(WAS)에서는 자동으로 HttpServletRequest 객체를 생성해주며 요청 정보를 개체에 저장해준다. 서버에서는 HttpServletRequest를 통해 브라우저에서 보낸 요청 데이터를 처리할 수 있게 된다.

예제를 통해 HttpServletRequest에 담긴 데이터를 콘솔에 찍어보자.
RequestInfo 클래스 생성

브라우저에서 해당 URL로 요청

실행 결과 값!!

HttpServletRequest 객체에 내장되어있는 메서드를 통해 원하는 요청 정보들을 얻을 수 있다.

HttpServletRequest의 메서드


위의 사진에 있는 것이 HttpServletRequest의 주요 메서드이다. 메서드를 통해 표시 되어 있는 값을 리턴한다.

쿼리스트링(Query String)

브라우저에서 서버로 요청할 때 데이터를 보내는 방법 중 하나로 URL 뒤에 ?name=value 형식으로 데이터를 담아서 보낼수 있다. ?뒤에오는 데이터 값을 쿼리스트링이라고 한다.

이 데이터를 얻기 위해서는 HttpServletRequest 객체의 getParameter 메서드를 이용해서 얻을수 있다. 이것을 어디에 작성을 해야하느냐 하면 메서드 내 파라미터로 작성을 하면 된다.

결과값 : ?year=2021&year=2020&year=2019

쿼리스트링의 name이 같은 경우

HttpServletResponse

HttpServletResponse객체도 HttpServletRequest객체와 마찬가지로 톰캣(WAS)에서 자동으로 객체를 생성해준다. 서버에서 만든 응답 정보를 브라우저에 보낼 때 사용한다.

예제를 통해 쿼리스트링으로 받은 데이터를 브라우저에 출력을 해보자!!
ResponseEx 클래스 생성

브라우저에 해당 URL로 요청

실행결과

0개의 댓글