[Servlet] Servlet을 통해 post로 전송 된 데이터 받기
어제 JSP에서 FORM send, POST 방식으로 보낸 한글 데이터가 자꾸 깨져보이는 현상이 있었다.
이미 나와 같은 시행착오를 겪은 사람들이 상당히 많았는지 구글에 많은 데이터가 있었는데 방법들이 다 먹히지 않는 것이다.
GET 방식으로 보낸 데이터는 구글링 신공으로 금방 처리했는데 유독 POST만 잘 안나왔다.
한 시간을 넘게 삽질했고 원인을 찾아 해결했다. (엄청나게 허무.....)
1) 서버의 web.xml 파일 내 코드 주석 해제
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!-- <async-supported>true</async-supported> -->
</filter>
중략
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
=> 구글링 결과 자꾸 이 코드를 집어넣으래서 "아니 이미 들어가 있는데 왜 난 안되냐고!!"했었는데......... 알고보니 써있긴 써있었지만 주석처리가 되어 있었다..ㅡㅡ;;
워낙 다른 코드도 많아 "아 여긴 주석처리 해놔도 적용이 되나보다" 했는데 당연히 안되는 거였다................. 결국 주석을 해제 처리해주니 되더라........(물론 아래 2번을 한 상태에서다)
2) doPost 메소드에서 Response의 컨텐츠 타입과 인코딩 문자열 지정
이것은 간단하다.
response 객체의 컨텐츠 타입과 문자열만 아래처럼 지정해주면 된다. response.setContentType("text/html;charset=utf-8");
그럼 response객체는 자동으로 utf-8로 인코딩이 되는 것이다.
이미 나와 같은 시행착오를 겪은 사람들이 상당히 많았는지 구글에 많은 데이터가 있었는데 방법들이 다 먹히지 않는 것이다.
GET 방식으로 보낸 데이터는 구글링 신공으로 금방 처리했는데 유독 POST만 잘 안나왔다.
한 시간을 넘게 삽질했고 원인을 찾아 해결했다. (엄청나게 허무.....)
1) 서버의 web.xml 파일 내 코드 주석 해제
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!-- <async-supported>true</async-supported> -->
</filter>
중략
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
=> 구글링 결과 자꾸 이 코드를 집어넣으래서 "아니 이미 들어가 있는데 왜 난 안되냐고!!"했었는데......... 알고보니 써있긴 써있었지만 주석처리가 되어 있었다..ㅡㅡ;;
워낙 다른 코드도 많아 "아 여긴 주석처리 해놔도 적용이 되나보다" 했는데 당연히 안되는 거였다................. 결국 주석을 해제 처리해주니 되더라........(물론 아래 2번을 한 상태에서다)
2) doPost 메소드에서 Response의 컨텐츠 타입과 인코딩 문자열 지정
이것은 간단하다.
response 객체의 컨텐츠 타입과 문자열만 아래처럼 지정해주면 된다. response.setContentType("text/html;charset=utf-8");
그럼 response객체는 자동으로 utf-8로 인코딩이 되는 것이다.
댓글
댓글 쓰기