본문으로 바로가기

GET/POST 전송 방식


GET 방식은 URL 주소에 데이터를 붙여서 전송하는데, 로그인창에서 ID와 비밀번호 같은 개인 정보가 함께 전송되면 데이터가 노출될 수 있어 보안에 취약하다. 즉, 보안과 관련 없는 간단한 데이터를 쉽게 전송할 수 있다.

POST 방식은 전송하는 데이터를 숨겨서 전송하기 때문에 보안성이 좋다.

  

GET 방식 POST 방식
- 서블릿에 데이터를 전송할 때는 데이터가 URL 뒤에 name=value 형태로 전송된다.
- 여러 개의 데이터를 전송할 때는 '&'로 구분해서 전송된다.
- 보안이 취약하다.
- 전송할 수 있는 데이터는 최대 255자이다.
- 기본 전송 방식이고 사용이 쉽다.
- 웹 브라우저에 직접 입력해서 전송할 수도 있다.
- 서블릿에서는 doGet()을 이용해 데이터를 처리한다.
- 서블릿에 데이터를 전송할 때는 TCP/IP 프로토콜 데이터의 body 영역에 숨겨진 채 전송된다.
- 보안에 유리하다.
- 전송 데이터 용량이 무제한이다.
- 전송 시 서블릿에서는 또 다시 가져오는 작업을 해야 하므로 처리 속도가 GET 방식보다 느리다.
- 서블릿에서는 doPost()를 이용해 데이터를 처리한다.


  

  

GET 방식으로 서블릿에 요청

<form name="frmLogin" method="get" action="login" encType="UTF-8"></form>
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, IOException {}

http://127.0.0.1:8090/LoginLogout/login2?user_id=jimin&user_pw=0219

  

  

POST 방식으로 서블릿에 요청

<form name="frmLogin" method="post" action="login" encType="UTF-8"></form>
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, IOException {}

http://127.0.0.1:8090/LoginLogout/login2

  

  

GET 방식과 POST 방식 요청 동시에 처리

<form name="frmLogin" method="get" action="login" encType="UTF-8"></form>
<form name="frmLogin" method="post" action="login" encType="UTF-8"></form>
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	public void init() throws ServletException {
		System.out.println("init 메서드 호출");
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet 메서드 호출");
		doHandle(request, response); // GET 방식으로 요청 시 다시 doHandle() 호출
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost 메서드 호출");
		doHandle(request, response); // POST 방식으로 요청 시 다시 doHandle() 호출
	}
	
    // 모든 호출 방식에 대해 처리
	private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		System.out.println("doHandle 메서드 호출");
		String user_id = request.getParameter("user_id");
		String user_pw = request.getParameter("user_pw");
		System.out.println("아이디:" + user_id);
		System.out.println("비밀번호:" + user_pw);
	}

	public void destroy() {
		System.out.println("destroy 메서드 호출");
	}
}

 

'Web > Servlet, Jsp' 카테고리의 다른 글

[Servlet] 서블릿의 응답(Response)과 요청(Request)  (0) 2021.09.16
[Servlet] 서블릿(Servlet)이란?  (0) 2021.09.15