본문 바로가기
교재 실습/자바 웹 개발 워크북

9. GET 요청

by Jint 2022. 1. 4.

HTTP 요청 중 GET요청에 대해 살펴본다. web02 프로젝트를 배치하여 톰캣 서버를 실행한다.이후 http://localhost:9999/web02/GetTest.html 링크를 실행한다.

GetTest.html 링크 실행 화면

이렇게 링크 실행 화면이 뜬다. 웹 브라우저 주소창에 URL을 입력하여 서버의 자원을 요청하는 경우 GET 요청이 발생한다. GET 요청의 3가지 3종세트 예시가 보인다. 크롬의 DevTools의 Network 탭에서 요청정보를 확인할 수 있다.

GET 요청 1의 요청정보

GET 요청이 이루어진 것을 확인할 수 있다.

 

링크를 클릭할 때에도 GET 요청이 발생한다. GetTest.html 링크 화면에서 '구글'링크를 클릭한다.

<h3>GET 요청 2: 링크를 클릭할 때</h3>
<p>
<a href="http://www.google.com">구글</a><br>
<a href="http://www.facebook.com">페이스북</a><br>
</p>

<a>태그는 GET 요청을 만든다.  크롬의 DevTools의 Network 탭에서 요청정보를 확인 한다.

GET 요청 2의 요청정보

GET 요청이 이루어진 것을 확인할 수 있다.

 

입력 폼의 method 속성 값이 'get'인 경우 서버에 GET 요청을 보낸다. GetTest.html 링크 화면에서 화면 입력 폼에 숫자를 입력 후 '=' 버튼을 클릭한다.

<h3>GET 요청 3: 입력폼의 method 속성을 GET으로 지정했을 때</h3>
<form action="CalculatorServlet" method="get">
	<input type="text" name="v1" size="4"> 
	<select name="op">
		<option value="+">+</option>
		<option value="-">-</option>
		<option value="*">*</option>
		<option value="/">/</option>
	</select> 
	<input type="text" name="v2" size="4"> 
	<input type="submit" value="="><br>
</form>

method 속성 기본값이 'get'이기 때문에 생략해도 된다. 크롬의 DevTools의 Network 탭에서 요청정보를 확인 한다.

GET 요청 3의 요청정보

GET 요청이 이루어진 것을 확인할 수 있다.

 

GET 요청은 서버에 보낼 데이터를 URI에 붙인다. 위 GET 요청 3의 요청정보 그림에서 첫 번째 라인을 살펴보면 사용자가 입력한 값이 서비스 주소 뒤에 붙어있다. '?' 문자는 서비스 주소와 데이터를 구별하는 구분자이며, '&' 문자는 데이터들을 구별하는 구분자이고, '=' 문자는 매개변수 이름과 값을 구별하는 구분자이다.

 

GET 요청은 자료 검색, 게시글 상세 정보 보기, 특정 상품 정보 조회 등 데이터 조회에 적합하다. URL을 통해 언제든지 해당페이지로 이동이 가능하고 결과화면을 다른 사람에게 쉽게 공유가 가능하다. 구글 화면에서 'HTTP 프로토콜' 검색 결과 화면과 URL이다.

구글 'HTTP 프로토콜' 검색 결과

https://www.google.com/search?q=HTTP+%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C&sxsrf=AOaemvI1v_MGtz6sNoVYXMUveS_Ze14WKw%3A1641299118789&source=hp&ei=rjzUYeqtLcT7wQOL1YPoAg&iflsig=ALs-wAMAAAAAYdRKvofHdILaEe3tTp-aSWzv980hf3oB&ved=0ahUKEwjqvMXXi5j1AhXEfXAKHYvqAC0Q4dUDCAk&uact=5&oq=HTTP+%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C&gs_lcp=Cgdnd3Mtd2l6EAMyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEOgQIIxAnOgsIABCABBCxAxCDAToOCC4QgAQQsQMQxwEQowI6CAgAEIAEELEDOg4ILhCABBCxAxDHARDRAzoRCC4QgAQQsQMQgwEQxwEQrwE6CwguEIAEEMcBENEDOgcIIxDqAhAnUABY1C5gijZoBXAAeAOAAaABiAHjDZIBBDIuMTSYAQCgAQGwAQo&sclient=gws-wiz

 

HTTP 프로토콜 - Google 검색

HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. ... 이 정보가 모니터와 같

www.google.com

 

검색 결과를 출력한 주소창의 URL을 확인하면 검색어를 포함한 다양한 검색 옵션들이 포함되어 있음을 알 수 있다.

 

하지만 보안 문제가 발생할 위험이 있고 이미지와 동영상과 같은 바이너리 파일의 데이터는 URL에 붙여 보낼 수 없다. BASE64라는 인코딩 방식을 통해 바이너리 데이터를 문자화해서 보낼 수 있지만 URI나 헤더 정보가 너무 크면 웹 서버에서 처리할 수 없기 때문에 바이너리를 전송하기에 GET 요청은 적합하지 않다. 물론 HTTP 사양에서는 요청라인이나 헤더 필드에 최대 크기를 제한하지 않지만 웹 서버는 대용량 URL을 사용할 때 보안 문제가 발생할 수 있기 때문에 최대 크기를 제한 한다.

 

바이너리 데이터 전송이나 주소창의 데이터 노출 문제는 POST 메소드를 사용하면 해결이 가능하다.

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글

11. 파일 업로드  (0) 2022.01.06
10. POST 요청  (0) 2022.01.05
8. HTTP 프로토콜의 이해 (2)  (0) 2022.01.03
7. HTTP 프로토콜의 이해 (1)  (0) 2022.01.02
6. 웹 애플리케이션 아키텍처의 특징  (0) 2022.01.01

댓글