Get 그리고 Post
Client(클라이언트)에서 Server(서버)로 요청(Request)시 데이터를 전달하는 방식이다.
Client는 우리가 자주 접하는 Web Page가 Client라고 할수 있고, 사용자가 전달하는 데이터를 Server의 전달하는 방식이 두가지가 있는데 그것이 바로 Get 방식과 Post 방식이다.
먼저 Get방식은 전달할 데이터가 URL 뒤에 붙어서 전송된다.
URL에 전달할 데이터가 그대로 노출되기때문에 비밀번호나 생년월일같은 민감한 정보들은 Get방식으로 절대 처리하지 않는것이 좋다. 그리고 요청 URL길이에 제한이 있다.
먼저 이러한 Form이 있다.
<%@ 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>
<h1>Get방식, Post방식</h1>
<form action="home_result.jsp" method="get">
이름:<input type="text" name="username" id="username"/><br/>
별명:<input type="text" name="nickname" id="nickname"/><br/>
<input type="submit" value="전송"/>
</form>
</body>
</html>
form 태그에 보면 action으로 submit 버튼이 눌렀을때 home_result.jsp로 이동되게 되어있고. Method="get"으로 되어있다.
여기서 get이 바로 get방식으로 데이터를 전달하겠다. 라는 의미이다. Method의 기본값이 get이므로 생략하면 자동으로 get방식으로 데이터를 전달한다.
이름에 kim, 별명에 kimchi 라고 적고 전송 버튼을 누르면
아직 home_result.jsp 파일을 생성하지않았기때문에 404 error가 뜨는건 당연하고, 주소표시줄을 보면
home_result.jsp?username=kim&nickname=kimchi로 url주소 뒤에 data가 표시되어 전송되는것을 확인할수 있다.
다음은 Post 방식이다.
<%@ 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>
<h1>Get방식, Post방식</h1>
<form action="home_result.jsp" method="post">
이름:<input type="text" name="username" id="username"/><br/>
별명:<input type="text" name="nickname" id="nickname"/><br/>
<input type="submit" value="전송"/>
</form>
</body>
</html>
method부분만 get에서 post로 변경해주었다.
이름:kim 별명:kimchi로 동일하게 전송해보겠다.
동일하게 페이지는 이동되었지만 주소 표시줄 상에 Data의 값이 보이질 않는다.
그렇다고해서 Data가 전송되지 않는것이 아니다. 둘의 차이점은 Get방식은 데이터가 Head에 담겨 전송되고 Body에 들어가지 않는다.
반대로 Post 방식은 데이터가 Head에 담기지않고 Body에 담겨 전송된다.
따라서 주소표시줄 창에 보이고 안보이는 점으로 보안성이 좋고 나쁘고를 판단할수는 없다.
이제 home_result.jsp를 생성하여 넘어온 Data를 확인해주겠다.
<%@ 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>
<%
String name = request.getParameter("username");
String nick = request.getParameter("nickname");
%>
<h1>넘어온이름:<%=name %>,넘어온별명:<%=nick %></h1>
</body>
</html>
둘다 동일하게 값을 받아올수 있다. 주소표시줄에 표시가 되고 안되고의 차이이다.
데이터를 안전하게 전송하라면 별도로 암호화 과정을 거쳐야하는데. 지금은 필자가 암호화에 대해서 논할 수준이 되지 못한다.
따라서 1차적으로 라도 Data의 값이 노출되지 않는 Post 방식이 get방식보다는 조금 보안성에 유리하다 라고 볼수 있다.
'Study > JSP' 카테고리의 다른 글
JSTL forEach (0) | 2023.02.15 |
---|---|
Model(모델) 처리 방법 대표적인 4가지 (0) | 2023.02.13 |
JSP Page에서 Java 클래스 Import하기 (0) | 2023.01.20 |
JSP 파일 템플릿 등록하기 (0) | 2023.01.14 |
*.properties 파일 생성하기 (0) | 2023.01.12 |