[WEB / JSP] GET 방식과 POST 방식의 차이점

김태희·2025년 7월 1일
0

JSP

목록 보기
1/6
post-thumbnail

웹 프로그래밍 기초 수업을 수강하면서 JSP자바스크립트를 배웠다.

이때 데이터베이스 삽입, 삭제, 수정, 검색 그리고 쿠키나 세션을 활용한 로그인과 회원가입 로직을 구현해보며 1학기를 마무리했다.


GET 방식과 POST 방식의 차이점

GET과 POST는 HTTP 프로토콜을 이용해 서버에 무언가를 요청할 때 사용하는 방식이다. 둘 다 요청을 보내는 역할을 하지만, 사용하는 목적과 방식에 큰 차이가 있다.

엽서(GET)와 편지 봉투(POST)에 비유할 수 있다.

GET 방식은 엽서를 보내는 것과 비슷하다.
주소(URL)에 전달할 내용(데이터)이 전부 드러나 있어 누구나 쉽게 볼 수 있다.

POST 방식은 편지 봉투에 편지를 넣어 보내는 것과 같다.
내용(데이터)을 봉투(Body) 안에 숨겨서 보내기 때문에, 겉에서는 내용을 알 수 없다.


주요 차이점 비교

항목GETPOST
데이터 전송 위치URL 뒤에 쿼리 스트링(Query String)으로 붙여서 전송하다.
?key=value&key2=value2 형태.
HTTP Request Body에 담아서 전송하다.
보안URL에 데이터가 그대로 노출되어 보안에 취약하다.
(서버 로그, 브라우저 기록에 남음)
Body에 데이터를 담으므로 URL에 노출되지 않아 상대적으로 안전하다.
데이터 길이URL 길이에 제한이 있어 전송할 수 있는 데이터의 양이 적다.길이 제한이 거의 없어 대용량 데이터 전송이 가능하다.
데이터 형태주로 텍스트 데이터만 가능하다.텍스트, 파일(이미지, 영상 등) 다양한 형태의 데이터 전송이 가능하다.
멱등성(Idempotency)*멱등성을 가진다. (여러 번 요청해도 결과가 동일하다)멱등성을 가지지 않는다. (요청할 때마다 서버 상태가 바뀔 수 있다)
캐싱(Caching)브라우저가 결과를 캐싱(저장)할 수 있다. 그래서 속도가 빠를 수 있다.기본적으로 캐싱하지 않는다.
북마크 / 방문 기록북마크하거나 방문 기록에 남길 수 있다.북마크하거나 방문 기록에 남길 수 없다.

언제 사용할까?

GET을 사용하는 경우

서버에서 데이터를 조회(Read)할 때 주로 사용하다.

검색 엔진에서 검색어를 전달하는 것처럼, 데이터가 노출되어도 괜찮은 경우에 사용하다.

캐싱이 필요한 경우에 유리하다. (예: 이미지나 CSS 파일 요청)

POST를 사용하는 경우

서버에 데이터를 생성(Create)하거나 수정(Update)할 때 주로 사용하다.

로그인 정보나 회원가입 정보처럼 민감한 데이터를 전송할 때 사용하다.

파일 업로드처럼 데이터의 크기가 클 때 사용하다.


JSP에서 POST 방식을 사용하여 입력하기

input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="process.jsp" method="post">
이름입력:<input type="text" name="name" size="10">
점수입력:<input type="text" name="score" size="10">
<input type="submit" value="입력">
</form>
</body>
</html>

JSP에서 GET 방식으로 출력하기

output.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
입력한 사용자 아이디 :<%=request.getParameter("userId") %><br>
입력한 사용자 패스워드 :<%=request.getParameter("password") %><br>
</body>
</html>

주소창에 GET 방식으로 userId와 password를 전달하여서 결과가 잘 출력되었다.

0개의 댓글