1. GET과 POST
1) GET
- 서버에게 Resource를 보내도록 요청. 데이터를 수신하는 기능
- 서버에서 정보를 조회하기 위해 설계된 메소드
- URL에 변수(데이터)를 포함시켜 요청한다.
- 데이터를 Header(헤더)에 포함하여 전송한다.
- URL에 데이터가 노출되어 보안에 취약하다.
- 캐싱이 가능하다.
2) POST
- 서버에 Input Data를 전송
- 서버에 저장된 리소스를 생성 및 변경하기 위해 설계된 메소드
- URL에 변수(데이터)를 노출하지 않고 요청한다.
- 데이터를 Body(바디)에 포함시킨다.
- URL에 데이터가 노출되지 않기에 기본적인 보안은 보장된다.
- 캐싱이 불가능하다.
3) GET과 POST의 차이점
- GET과 달리 POST는 전송할 데이터를 HTTP 메세지의 Body에 담아서 전송
- GET이 Idempotent하도록 설계되었다는 것은 GET으로 서버에 동일한 요청을 여러 번 전송해도, 동일한 응답이 돌아온다는 것을 의미
- (예시: 브라우저에서 웹 페이지를 열거나, 게시글을 읽는 등 조회를 하는 행위)
- POST는 Non-idempotent하기 때문에, 서버에 동일한 요청을 여러 번 전송해도 각기 다른 응답을 받을 수 있다.
- (예시 : 게시글을 쓰면 서버에 게시글이 저장되고, 게시글을 삭제하면 해당 데이터가 삭제되는 등 서버에 변화를 일으키는데 사용)
4) 그 외 Request Method
- PUT : 서버의 Resource에 데이터를 저장하기 위해 사용(GET과 반대)
- DELETE : 서버에게 Resource를 삭제하도록 요청. HTTP규격에는 클라이언트가 DELETE 요청을 보내도록 정의
5) POST로 파라미터 값 전달하기
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>form.jsp</title>
</head>
<body>
회원가입 화면
<form action="<%= request.getContextPath() %>/EX2/action.jsp" method="post">
<!-- 아이디 : <input type="text" name="uid"> <br/>
비 번 : <input type="password" name="upw"> <br/>
권 한 : <select name="ulevel">
<option value="판매자">판매자</option>
<option value="구매자">구매자</option>
</select><br/>
이 름 : <input type="text" name="uname"> <br/>
이메일 : <input type="text" name="uemail"> <br/>
<input type="submit" value="회원가입버튼"> -->
아이디 : <input type="text" name="uid" value="id001"> <br/>
비 번 : <input type="password" name="upw" value="001"> <br/>
권 한 : <select name="ulevel">
<option value="판매자">판매자</option>
<option value="구매자">구매자</option>
</select><br/>
이 름 : <input type="text" name="uname" value="공공일"> <br/>
이메일 : <input type="text" name="uemail" value="email001@naver.com"> <br/>
<input type="submit" value="회원가입버튼">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<title>action.jsp</title>
<%
request.setCharacterEncoding("euc-kr");
//java 프로그램 언어 작성 위치
/* String uid=request.getParameter("uid1"); //파라미터 값 읽어오기 null출력*/
String uid=request.getParameter("uid"); //파라미터 값 읽어오기
String upw=request.getParameter("upw"); //파라미터 값 읽어오기
String ulevel=request.getParameter("ulevel"); //파라미터 값 읽어오기
String uname=request.getParameter("uname"); //파라미터 값 읽어오기
String uemail=request.getParameter("uemail"); //파라미터 값 읽어오기
//data type 변수=값; //uid변수를 선언하고 화면에서 입력한 예) id002를 uid변수에 담는다.(대입,입력)
System.out.println(uid+"<-uid"); //eclipse console창에 출력
System.out.println(upw+"<-upw"); //eclipse console창에 출력
System.out.println(ulevel+"<-ulevel"); //eclipse console창에 출력
System.out.println(uname+"<-uname"); //eclipse console창에 출력
System.out.println(uemail+"<-uemail"); //eclipse console창에 출력
out.println(uid+"<-uid 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(upw+"<-upw 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(ulevel+"<-ulevel 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(uname+"<-uname 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(uemail+"<-uemail 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
%>
uid 변수에 담려 있는 값을 화면출력 방법2 : <%=uid%> <br>
upw 변수에 담려 있는 값을 화면출력 방법2 : <%=upw%> <br>
ulevel 변수에 담려 있는 값을 화면출력 방법2 : <%=ulevel%> <br>
uname 변수에 담려 있는 값을 화면출력 방법2 : <%=uname%> <br>
uemail 변수에 담려 있는 값을 화면출력 방법2 : <%=uemail%> <br>
<a href="<%= request.getContextPath() %>
/EX2/getAction.jsp?uid=<%=uid%>&upw=<%=upw%>&ulevel=<%=ulevel%>&uname=<%=uname%>&uemail=<%=uemail%>">
get방식요청(클릭)</a>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<title>getAction.jsp</title>
<%
request.setCharacterEncoding("euc-kr"); //한글 깨지기 방지
/* String uid=request.getParameter("uid1"); //파라미터 값 읽어오기 null출력*/
String uid=request.getParameter("uid"); //파라미터 값 읽어오기
String upw=request.getParameter("upw"); //파라미터 값 읽어오기
String ulevel=request.getParameter("ulevel"); //파라미터 값 읽어오기
String uname=request.getParameter("uname"); //파라미터 값 읽어오기
String uemail=request.getParameter("uemail"); //파라미터 값 읽어오기
//data type 변수=값; //uid변수를 선언하고 화면에서 입력한 예) id002를 uid변수에 담는다.(대입,입력)
System.out.println(uid+"<-uid"); //eclipse console창에 출력
System.out.println(upw+"<-upw"); //eclipse console창에 출력
System.out.println(ulevel+"<-ulevel"); //eclipse console창에 출력
System.out.println(uname+"<-uname"); //eclipse console창에 출력
System.out.println(uemail+"<-uemail"); //eclipse console창에 출력
out.println(uid+"<-uid 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(upw+"<-upw 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(ulevel+"<-ulevel 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(uname+"<-uname 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
out.println(uemail+"<-uemail 변수에 담려 있는 값을 화면출력 방법1 <br/>"); //웹페이지에 출력
%>
uid 변수에 담려 있는 값을 화면출력 방법2 : <%=uid%> <br>
upw 변수에 담려 있는 값을 화면출력 방법2 : <%=upw%> <br>
ulevel 변수에 담려 있는 값을 화면출력 방법2 : <%=ulevel%> <br>
uname 변수에 담려 있는 값을 화면출력 방법2 : <%=uname%> <br>
uemail 변수에 담려 있는 값을 화면출력 방법2 : <%=uemail%> <br>
6) POST와 GET의 한글 출력 하는 방법
- post의 경우
- get의 경우
'수업 > 수업정리' 카테고리의 다른 글
2024-02-29-오전:태그 (0) | 2024.02.29 |
---|---|
2024-02-28-오전~오후:CSS선택자 (0) | 2024.02.28 |
2024-02-26-오전:Eclipse 서버파일 수정 (1) | 2024.02.26 |
2024-02-22-오전:table과 input, select (0) | 2024.02.22 |
2024-02-21-오후:UI의 특징 (0) | 2024.02.21 |