본문 바로가기

📚Study Note/JSP Servlet

[ JSP ] get 방식과 post 방식 비교

get 은 정보가 모두 노출되는 엽서와 비슷하고 post는 봉투에 동봉된 편지와 방식이 비슷하다. 

■■■  Get vs Post  ■■■


■ GET 방식
■ POST 방식
■ GET 방식
예) https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=104&oid=001&aid=0012383345
?(question) 마크 전까지는 요청하는 페이지이고 
mode=LSD&mid=sh~~ 이부분 부터는 전송 데이터이다. 

	- get 방식은 엽서를 보내는 방식과 유사한 전송 / 요청 방식
	- 주소 + 데이터(모두 노출)
	- 전송할 데이터를 문자열 형태(Query String)로 URL 뒤에 인수로 붙여서
	  전송하는 방식이다.
	- URL 뒤에 인수로 붙어있는 내용을 누구나 볼 수 있고
	  이로 인해 보안성이 취약하다고 볼 수 있다.
	- 또한, get 방식은 보낼 수 있는 데이터 량에 한계가 있기 때문에(과거)
	  많은 데이터를 보내는 경우 일정 크기 이상에서는 잘림 현상이 발생한다.
	  (길이 제한을 가진다는 의미이다. URL 최대 길이 2048 char)
	- 특히나 <form> 태그에서의 get 방식은
	  서버로 데이터를 전송하는 과정에서 서버 처리가 지연될 경우
	  중복해서 요청이 이루어진다는 문제가 발생할 수 있다는 단점을 가지고 있다.
	- 형식 및 구조
	『URL 주소? 속성=데이터&속성=데이터&...』
	『URL 주소?name=value&tel=value%...』
	- get 방식은 select 적인 성격을 가지고 있다.
	  서버에서 데이터를 가지고와서 보여준다거나 하는 용도로 주로 사용한다.
	  서버의 값이나 상태를 바꾸는 용도로는 사용하지 않는다.
	  즉 , 단순 페이지 요청에 많이 사용된다는 것이다.
	  - get 방식의 장점은 여러가지 형태를 통해 간편한 데이터 전송이 가능하다는 것이다.
	  post 방식처럼 form 태그를 사용하여 전송도 하고.
	  링크에 직접 걸어 사용해도 되고, 주소창에 직접 입력해도 된다.
	   예) 
	º	<a href = " http://url?키=값&키=값">
	º	<form action="http://url?키=값&키=값">
	º	window.open(http://url?키=값&키=값);
	º	window.location.href="http://url?키=값&키=값";

	window.location.replace(http://url?키=값&키=값);

■ POST 방식

 	예 ) http://localhost:8090/WebApp06/Test001.jsp
	- 주소만 노출/ 데이터는 숨김
	- form 태그에서 mothod 속성을 post 로 설정해서 요청
	- 파일의 형태로 전송되기 때문에 url 상에서는 내용이 나타나지 않는다.
	- 이로 인해 get 방식에 비해 보안성이 높다고 할 수 있다.
	- post 방식은 http body 안에 숨겨져서 전송된다.
	- get 방식처럼 url 뒷부분에 추가해서 보내는 것이 아니라
	http body 안에 넣어서 보내기 때문에 get 방식에서 발생할 수 있는
	보안성 문제를  어느 정도 해결 할 수 있다.
	- get 방식에 비해 대용량의 데이터를 전송할 때 사용한다,
	- form 태그를 이용해서 submit 하는 일반적인 형태가 post 방식이다.
	- post 방식은 서버의 값이나 상태를 바꾸기 위해 주로 사용한다.
	글쓰기를 하게 되면 글의 내용이 데이터베이스에 저장되고
	수정을 하게되면 데이터베이스에 수정된 값이 적용될 수 있도록
	처리하는 구성인 것이다.