* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.
2020 Servlet&JSP 프로그래밍
www.youtube.com
한글이 깨지는 문제 해결방법 최종 정리
한글이 깨지는 문제의 원인
- [GET] 서버가 클라이언트에 response할 때 (서버 문제)
- [GET] 서버가 response한 컨텐츠를 클라이언트가 해석할 때 (클라이언트 문제)
- [POST] 클라이언트가 서버에 POST 요청을 보낼 때 (클라이언트 문제)
한글이 깨지는 문제 해결
1. [GET] 서버가 클라이언트에 response할 때
- 서버가 클라이언트에 보내는 response의 인코딩 방식을 결정하는 코드 작성
- response.setCharacterEncoding("UTF-8");
- 서블릿을 저장하거나 네트워크를 통해 보낼 땐, 출력도구를 통해 출력 형식이 UTF-8임을 지정
@WebServlet("/매핑주소")
public class 클래스명 extends HttpServlet {
protected void service(HttpServletRequest request
, HttpServletResponse response)
throws ServletException, IOException
{
response.setCharacterEncoding("UTF-8");
}
}
2. [GET] 서버가 response한 컨텐츠를 클라이언트가 해석할 때
- 서버로부터 받은 컨텐츠를 클라이언트가 해석하는 인코딩 방식을 결정하는 코드 작성
- response.setContentType("text/html; charset=UTF-8");
- 해당 컨텐츠가 HTML 문서이며, 컨텐츠 타입은 UTF-8임을 지정
@WebServlet("/매핑주소")
public class 클래스명 extends HttpServlet {
protected void service(HttpServletRequest request
, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html; charset=UTF-8");
}
}
3. [POST] 클라이언트가 서버에 POST 요청을 보낼 때 (멀티 바이트 문자 전송 문제)
- 클라이언트가 POST 요청으로 서버에 전달한 값의 인코딩 방식을 지정하는 코드 작성
- request.setCharacterEncoding("UTF-8");
- POST 요청으로 전달한 값의 형식이 UTF-8임을 지정
- 서블릿에 일일이 지정할 필요 없이 필터를 생성해 필터가 작동되기 전에 UTF-8로 지정하는 코드를 작성하면 됨
- @WebFilter(”/*”)
- /*: 어떤 요청이 와도 모든 URL 패턴에 필터를 적용
- @WebFilter(”/*”)
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request
, ServletResponse response
, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
}
'☕ Java 웹 프로그래밍 > Servlet & JSP' 카테고리의 다른 글
[Servlet&JSP] 여러 개의 Submit 버튼 사용하기 (2) | 2023.05.28 |
---|---|
[Servlet&JSP] 이클립스에서 클래스가 아닌, 서블릿으로 서블릿 만들기 (0) | 2023.05.26 |
[Servlet&JSP] 학습과제: 사용자 입력을 통한 계산 요청 (4) | 2023.05.26 |
[Servlet&JSP] 서블릿 필터(Servlet Filter) (0) | 2023.05.25 |
[Servlet&JSP] 사용자 입력: 한글 입력 문제 (2) | 2023.05.24 |