1. request 객체 설정
웹 브라우저를 통해 post 방식으로 한글값을 받는 경우 어떤 일이 발생하는지 확인해보자.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(request.getParameter("name")); // 결과: ãã´ãã¹
}
위 코드의 결과를 보면 매우 이상한 문자가 발생하는 것을 확인할 수 있다. 이는 우리는 UTF-8이라는 인코딩 방식을 사용하지만 브라우저는 요청을 보낼 때 해당 encoding 방식을 보장하지 않기 때문에 발생하는 문제다. 따라서 우리는 request 객체의 인코딩 방식을 아래와 같이 지정해줘야 올바른 결과를 얻을 수 있다.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
System.out.println(request.getParameter("name")); // 결과: Maru
}
2. response 객체 설정
웹 브라우저에서 요청을 받아 해당 요청의 결과를 전달해줄 때 우리는 response 객체를 활용한다. 즉, 보내주는 response 객체가 어떤 encoding 방식을 채택했는지를 알아야 한글을 제대로 출력할 수 있다. 이를 위해 우리는 아래와 같이 response 객체를 설정해줘야 한다.
response.setContentType("text/html;charset:UTF-8");
response.setCharacterEncoding("UTF-8");
3. Apache 한글 설정
추가적으로 Apache Tomcat의 UTF-8 설정 방법을 살펴보자. Eclipse를 보면 Servers 파일에 사용하는 서버들이 존재한다. 이때 원하는 서버의 파일에 들어가서 server.xml의 <Connector> 태그를 수정해주면 된다.
// 기본 설정
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
// 변경 (URIEncoding="UTF-8" 추가)
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
'BackEnd > JSP & Servlet' 카테고리의 다른 글
Servlet 작성법 (0) | 2023.01.24 |
---|---|
Servlet이란? (0) | 2023.01.24 |
[JSP] JSTL(JSP Standard Tag Library) (0) | 2022.12.24 |
[JSP] EL(Expression Language) (0) | 2022.12.23 |
Servlet과 JSP 연동 (0) | 2022.12.23 |