클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

서블릿의 기초 7 - get 방식과 post 방식의 차이 본문

웹 · 앱 개발/JSP & Servlet

서블릿의 기초 7 - get 방식과 post 방식의 차이

huenuri 2024. 8. 25. 19:02

어제 이 공부를 하려다가 너무 지루해서 하다 말았다. 오늘 하루도 거의 다 지나갔지만 그래도 공부를 시작해본다. 드디어 오늘 한달 만에 블로그 정리를 모두 마쳤다. 두 달 동안 벨로그에 기록했던 380개의 포스트와 함께 한 달 동안 새로 기록한 150개 가량의 글을 합쳐서 530개 정도 되는 방대한 분량의 글이었다.

두 개의 블로그로 나누어서 이곳에는 공부일지만 올리니 훨씬 더 관리하기도 좋고 주제가 나누어져 있어서 좋았다. 사실 난 벡엔드 공부가 별로 재미가 없다. 하고 싶지도 않지만 그래도 하는데까지는 해봐야겠다. 다시 그림도 그리고 싶고 게임 개발도 하고 싶지만 아직 어떻게 시작해야 할지 모르겠고 막막하다.

 

그래도 이번주 안에 다시 시작해볼 것이다!


 

 

get 방식과 post 방식

 

1. HTML과 서블릿의 기본 코드 작성하기

 

 

 

그런 다음 웹 페이지를 확인하면 다음과 같이 뜨고 있다. 이제 get과 post 방식을 구별하는 방법에 대해서 살펴보자.


 

 

 

 

2. 입력란에 문자를 쓰고 제출 버튼 누르기 <get 방식>

 

200은 성능을 말한다.

 

 

 

name을 클릭하면 get 방식으로 표시되어 있다.

 

 

 

 

 

 

get 방식은 따로 지정하지 않으면 기본값으로 적용이 된다.


 

 

 

3. post 방식으로 데이터 전송하기

 

 

 

 

데이터를 한번에 보내면 중간에 오류가 발생시 처음부터 다시 보내야 하니 패킷 단위로 나누어서 보내는 방식이다. 그 정보는 body에 기록하게 된다.

 

 

 

 

데이터가 노출되지 않고 있다.

 

 

 

 

이제 post 방식으로 데이터가 잘 전송된 것을 볼 수 있다.


 

 

 

 

 

4. 인코딩하고 한글로 써보기

 

 

get 방식의 인코딩

post 방식은 가져오는 데이터에게 인코딩을 해준다.

 

 

하지만 한글로 쓰면 글씨가 깨진다. 무엇이 문제일까? 강의 코드는 똑같이 썼는데..


 

 

POST 방식에서 한글이 깨지는 문제는 주로 요청의 인코딩 설정이 잘못되었을 때 발생한다. 아래 몇 가지 사항을 확인하고 조정하여 문제를 해결할 수 있다.

해결 방법

  1. request.setCharacterEncoding("EUC-KR"); 위치 확인:
    • 이 코드는 request.getParameter("text") 메서드를 호출하기 전에 위치해야 한다. 이미 파라미터를 읽은 후에 인코딩을 설정하면 인코딩이 적용되지 않는다.
    • 현재 코드에서는 setCharacterEncoding() 메서드가 올바른 위치에 있으므로 문제가 없어 보이지만, 여전히 깨지는 경우는 서버 설정과 브라우저 설정을 확인해 봐야 한다.
  2. HTML 폼 인코딩 확인:
    • HTML 폼의 charset과 method 속성을 확인해야 한다.
    • method="post"와 함께 <meta charset="EUC-KR">와 같은 인코딩이 설정되어 있어야 한다.
  3. 서버와 브라우저의 인코딩 설정 확인:
    • 서버(Tomcat)의 기본 인코딩 설정이 UTF-8이거나 다른 인코딩으로 설정되어 있을 수 있다. 이 경우, EUC-KR로 설정해도 UTF-8과 충돌할 수 있다. 서버 설정에서 인코딩을 EUC-KR로 맞추거나, HTML과 서블릿 모두에서 인코딩을 UTF-8로 통일하는 것이 좋다.
  4. Response 인코딩 설정:
    • 한글이 깨지는 문제는 응답의 인코딩 문제일 수도 있다. 이 경우, 응답의 인코딩을 설정해야 한다.

 

 

응답 객체를 설정해줌으로 문제를 해결할 수 있었다. 그리고 이때는 UTF-8로 맞추어야 한다.


 

 

 

get과 post 전송 방식의 폼과 서블릿 테스트

 

 

 

 

 

 

post 방식으로 처리될 때는 url이 노출되지 않음을 볼 수 있다.

 


 

 

 

학습을 마치고

드디어 어제 공부하려고 했던 부분을 마쳤다. 하기 싫어도 해야 할 것은 언젠가는 반드시 해야 한다는 것을 느끼는 시간이었다. 오늘은 저녁에 서블릿의 기초 단원은 모두 마치고 저녁에 시간이 남으면 유니티 게임 개발을 다시 시작해보고 싶다. 생각해보면 난 게임을 개발하고 그림을 그릴 때가 가장 재미있었다.