* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.
2020 Servlet&JSP 프로그래밍
www.youtube.com
Servlet의 출력 형식에 대해 알고 싶다면, 아래의 글을 참고하세요.
[Servlet&JSP] 4일차 | Servlet 출력 형식의 이해
한글로 된 문서의 컨텐츠 형식 지정하기
서블릿 내부에 한글 코드를 작성해 실행하면 깨지는 문제
- 서블릿 내부에 한글 코드를 작성해 실행하면 깨지는 이유
- 1) 서버에서 한글을 지원하지 않는 문자코드로 인코딩한 경우
- 예: 서버에서 ISO-8859-1 단위로 보내면 1byte씩 쪼개서 보내는데 UTF-8은 2byte 단위로 보내짐
- 2) 서버에서는 UTF-8로 인코딩해서 보냈지만 브라우저가 다른 코드로 잘못 해석한 경우
- 1) 서버에서 한글을 지원하지 않는 문자코드로 인코딩한 경우
서블릿 내부에 한글 코드를 작성해 실행하면 깨지는 문제 해결 방법
- 1) 클라이언트에 보내는 인코딩 방식을 결정하는 코드 작성
- 서블릿을 저장하거나 네트워크를 통해 보낼 땐, 출력도구를 통해 출력 형식이 UTF-8임을 지정
//사용자에 보내는 인코딩 방식을 결정 response.setCharacterEncoding("UTF-8");
- 수정 후 실행 결과
- 서버의 오류를 해결했으니 클라이언트의 오류를 해결해야 함
- Response Headers에 컨텐츠가 UTF-8로 읽어저야 함을 심어줘야 함
- 2) 서버로부터 받은 컨텐츠를 클라이언트가 해석하는 인코딩 방식을 결정하는 코드 작성
- 해당 컨텐츠가 HTML 문서이며, 컨텐츠 타입은 UTF-8임을 지정
response.setContentType("text/html; charset=UTF-8");
- 수정 후 실행 결과: 정상적
- HTML 문서로 인식하기 때문에 <br> 태그를 없애면 줄바꿈도 되지 않음
- 다시 Network에서 Response Headers를 확인하면 Content-Type이 지정된 걸 확인할 수 있음
- 최종 코드
@WebServlet("/hi")
public class Nana extends HttpServlet {
@Override
protected void service(HttpServletRequest request
, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
for(int i = 0; i < 10; i++) {
out.println((i+1) + ": 안녕 Servlet<br />");
}
}
}
'☕ Java 웹 프로그래밍 > Servlet & JSP' 카테고리의 다른 글
[Servlet&JSP] 사용자 입력: 기본 값 사용하기 (0) | 2023.05.24 |
---|---|
[Servlet&JSP] 사용자 입력: GET 요청과 쿼리스트링 (0) | 2023.05.24 |
[Servlet&JSP] Servlet 출력 형식의 이해 (0) | 2023.05.24 |
[Servlet&JSP] 어노테이션을 이용한 URL 매핑 (0) | 2023.05.23 |
[Servlet&JSP] 이클립스를 이용한 서블릿 프로그래밍 (0) | 2023.05.23 |