cbw1030
기록하는 공간
cbw1030
전체 방문자
오늘
어제
  • 전체보기 (101)
    • Programming (99)
      • Java (19)
      • Servlet (10)
      • Spring Framework (13)
      • Javascript (22)
      • AWS (2)
      • 네트워크 (8)
      • 데이터베이스 (13)
      • 리눅스 (3)
      • 블록체인 (7)
      • 용어 정리 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • beautifulsoup
  • 크롤링
  • javascript
  • 데이터 사이언스
  • 브라이틱스 스튜디오 사용법
  • react
  • 삼성SDS
  • web
  • 브라이틱스 튜토리얼
  • 머신러닝
  • 생활코딩
  • Brightics
  • 브라이틱스
  • 데이터분석
  • 브라이틱스 스튜디오
  • 삼성SDS 브라이틱스
  • Brightics AI
  • 차원축소
  • Brightics Studio
  • 인공지능

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
cbw1030

기록하는 공간

Programming/Servlet

(Servlet/JSP) setCharacterEncoding, setContentType 정리

2019. 10. 2. 19:29
반응형

JSP와 서블릿 공부를 하면서 항상 헷갈렸던 내용이 있다. 

  • request.setCharacterEncoding("UTF-8");
  • response.setCharacterEncoding("UTF-8");
  • response.setContentType("text/html; charset=utf-8"); 

이번 포스팅에서는 위 세 개의 문장을 알아보겠습니다.

request.setCharacterEncoding("UTF-8")

우리가 어떤 .jsp파일이나 .html파일에서 폼 태그에 입력한 값을 전송한다고 가정하겠습니다.

폼 태그에서 입력한 값을 전송할 때는 GET방식과 POST방식으로 나뉘는데 POST방식으로 보내는 값이 '한글'일 경우 깨지지 않게 전달하기 위해 사용하는 것이 request.setCharacterEncoding("UTF-8"); 입니다.Q. 그럼 GET방식으로 보내면 어떻게 되나요?

 

GET방식으로 보내진 한글은 톰캣이 기본적으로 UTF-8 문자코드가 적용이 되어 있어서 자동으로 한글처리를 해주기 때문에 한글이 깨지지 않습니다.

 

GET, POST 방식을 모두 사용하니 request.setCharacterEncoding("UTF-8");은 꼭 필요합니다.

 

그래도 한글처리가 안된다면 아래와 같이 해보자.

이클립스 server.xml 에서 port=8080과 port=8009 두 개의 connector에 URIEncoding="UTF-8"을 추가한다.
    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"  URLEncoding="UTF-8"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URLEncoding="UTF-8"/>

 

response.setCharacterEncoding("UTF-8")

서블릿에서 화면에 데이터를 출력하기 위해서는 out.println을 사용을 하는데 위의 코드없이 out.print("안녕");를 한다면 '안녕'이 출력되는 것이 아니라 ????과 같은 물음표가 출력이 됩니다.

이러한 문제점을 해결하기 위한 방법은 response.setCharacterEncoding("UTF-8"); 를 추가하는 것입니다.

 

response.setContentType("text/html; charset=utf-8")

그런데  response.setCharacterEncoding("UTF-8"); 이 문장만 사용하면 '안녕'이라고 나오지 않고 '댊뀘'과 같은 처음보는 이상한 문자가 출력이 됩니다.

 

이는 브라우저마다 기본적으로 문자코드를 해석하는 default가 다르기 때문입니다. 

그래서 브라우저한테 '우리는 utf-8 문자코드로 사용할거야. utf-8로 사용해줘'라는 메세지를 전달해야 한다.

 

이러한 메세지를 전달하는 문장이 바로 response.setContentType("text/html; charset=utf-8"); 이다.

반응형
저작자표시 (새창열림)

'Programming > Servlet' 카테고리의 다른 글

서블릿(Servlet) url 매핑기법 2가지(web.xml 방식, 어노테이션 방식)  (0) 2020.07.30
[JSP] JSTL(Jsp Standard Tag Library) 정리 - <c:set>,<c:out>,<c:remove>,<c:if>,<c:choose>,<c:when>,<c:otherwise>,<c:forEach>,<c:forTokens> 등  (1) 2019.10.27
[JSP] JSP Beans(빈즈)에 대해 알아보자  (0) 2019.10.09
[JSP] 표현언어(Expression Language)란?  (0) 2019.10.09
JSP 내장객체를 활용한 간단한 twitter 구현하기  (0) 2019.10.01
    'Programming/Servlet' 카테고리의 다른 글
    • [JSP] JSTL(Jsp Standard Tag Library) 정리 - <c:set>,<c:out>,<c:remove>,<c:if>,<c:choose>,<c:when>,<c:otherwise>,<c:forEach>,<c:forTokens> 등
    • [JSP] JSP Beans(빈즈)에 대해 알아보자
    • [JSP] 표현언어(Expression Language)란?
    • JSP 내장객체를 활용한 간단한 twitter 구현하기
    cbw1030
    cbw1030

    티스토리툴바