get & post

JSP, Servlet 공부를 하면서 참고한 서적입니다.

프로젝트로 배우는 자바 웹 프로그래밍

GET & POST

GET과 POST 메서드는 웹 서비스 개발에 주로 사용하는 메서드 입니다.
두 방식 모두 서버에 요청을 하는 메서드 입니다. HTML의 form태그에 method 방식을 지정하는데
get과 post 두 가지 중 한가지의 방식으로 지정합니다.

  • GET 방식

    서버에 있는 정보를 가져오려고 설계된 기법입니다. 서버에 최대 240byte까지 데이터를 전송 할 수 있습니다.
    URL이 노출되기때문에 보안상 문제가 생길 수 있습니다. 검색엔진을 사용하여 검색하면 URL에 표시되듯이 보안에 약함에도 불구하고
    사용하는 이유는 속도가 빠르기 때문입니다.

    http:// www.example.com?id=mommoo&pass=1234

    이런 주소 방식으로 전달 됩니다. ?는 데이터 표시의 시작점이며 이후 값들을 서버에서 QUERY_STRING을 통해 전달 되고
    속성=값 즉, 변수명(필드)=값형태로 사용해야 합니다. &는 속성값을 연결해주는 문자열입니다. 즉, URL에 변수(데이터)를 포함시켜 요청합니다. GET 방식에서 BODY에 특별한 내용을 넣을 것이 없으므로 BODY가 빈상태로 보내집니다. 따라서 BODY 데이터를 설명하는 Content-Type이라는 헤더필드는 들어가지 않습니다. 개인정보가 포함되지 않는 상황에서 캐싱을 하여 속도를 높이거나 즐겨찾기를 편리하기 위해 사용되는 경우가 많습니다.

    캐싱(Caching) : 한번 접근 후, 또 요청할시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것

    우리가 어떤 물건 a에 대해서 즐겨찾기를 추가하면 그 물건의 이름이 a라는 정보를 url에 추가하여 즐겨찾기를 생성할 수 있는 것입니다.

    <%
    String uri = "memberProcServlet?action=update&id=" + member.getId();
    %>
    <td>&nbsp;<button onclick="location='<%=uri%>'">수정</button>&nbsp;</td></tr>
    

    여러개의 Key와 Value를 보내는 경우에 &를 사용하여 이어주는 GET방식은 최소한의 보안유지도 하지 않기 때문에 실제 웹사이트에서 ID와 PW같은 중요한 정보를 GET방식으로 사용하면 개인정보가 노출되는 문제가 발생합니다.

  • POST 방식

    POST방식은 서버로 정보를 올리려고 설계된 방법입니다. 예를들어 HTML 폼에 입력한 내용을 서버에 전달하는 것과 같은 행동을 취합니다. 서버에 전달할 수 있는 데이터 크기에는 제한이 없습니다. URL에 변수(데이터)를 노출하지 않고 요청합니다.
    POST방식은 URL에 붙여서 보내지 않고 BODY에다가 데이터를 넣어서 보낸다.
    따라서, 헤더필드중 BODY의 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고 어떤 데이터 타입인지 명시한다.
    POST 방식은 URL에 데이터가 노출되지 않으므로 즐겨찾기나 캐싱이 불가능하지만 쿼리스트링(문자열)데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스와 같은 객체들의 값도 전송이 가능합니다.

    POST 방식 : 로그인(Id, Password)

    Content-Type은 다음과같이 명시할 수 있습니다.

    response.setContentType(“text/html; charset=UTF-8”);

    즉, text/html 이 부분이 MIMI Type이며 application/x-www-form-urlencoded, text/plain, multipart/form-data등이 있습니다.

Reference : 개발자로 홀로서기