📌브라우저 => 서버 (Request)
- 요청에는 Get 방식, Post 방식 2가지가 있다.
- Post 방식의 경우, 이클립스로 서블릿을 개발하면서 JAVA 메소드로 인코딩을 할 수 있는데,
request.setCharacterEncoding("UTF-8"); 로 간단히 인코딩 방식을 설정할 수 있다.
- GET 방식으로 전달된 문자열들은 URI에 포함되어 전달되기 때문에 URI에 대해 인코딩 처리 작업을 해야한다.
서버마다 기본적으로 URI 인코딩 문자코드가 정해져 있는데, GET 방식으로 보내진 한글은 톰캣이 기본적으로 UTF-8이 적용되어 있어서 자동으로 처리를 해주기 때문에 글자가 깨지지 않는다.
-따라서 FORM 태그에서 POST 방식으로 한글 데이터를 전송하고, 서블릿에서 doPost() 메소드를 사용해야 하는 경우에
request.setCharacterEncoding("UTF-8");을 작성해야 한다.
📌서버 => 브라우저 (Response)
- 서버에서 브라우저로 데이터를 보낼 때는 Response 객체를 사용한다.
- 인코딩시 필요한 Response 객체의 메소드는 두 가지다.
- response.setCharacterEncoding("utf-8");
- response.setContentType("text/html; charset=utf-8");
📌request.setCharacterEncoding("utf-8");
- 들어오는 파라미터를 UTF-8로 해석한다
- 폼 태그에서 입력한 값을 전송할 때는 GET방식과 POST방식으로 나뉘는데'
POST방식으로 보내는 값이 '한글'일 경우 깨지지 않게 전달하기 위해 사용하는 것이다.
📌response.setCharacterEncoding("utf-8");
- 서블릿이 HTML 파일을 만들 때 UTF-8 로 쓰기
- 웹 브라우저에게 한글이 포함되어 있으니 잘 표시하라고 알려주는 역할을 한다.
- 서블릿에서 화면에 데이터를 출력하기 위해서는 out.println을 사용을 할경우,
그냥 out.print("안녕하세요");를 한다면 '안녕하세요'가 출력되지 않고 ????과 같은 물음표가 출력된다.
- 해결하기 위한 방법은 response.setCharacterEncoding("UTF-8"); 를 추가하는 것이다.
📌response.setContentType("text/html;charset=utf-8");
- HTML이 UTF-8 형식이라는 것을 브라우저에게 알리는 것으로.
- 위의 response.setCharacterEncoding("UTF-8"); 이 문장만 사용하면 '안녕하세요'라고 나오지 않고
'댊뀘'과 같은 처음보는 이상한 문자가 출력이 된다.
- 이는 브라우저마다 기본적으로 문자코드를 해석하는 default가 다르기 때문이다.
그래서 브라우저한테 '우리는 utf-8 문자코드로 사용할거야. utf-8로 사용해줘'라는 메세지를 전달해야 한다.
- 이러한 메세지를 전달하는 문장이 바로 response.setContentType("text/html; charset=utf-8"); 이다.
'Servlet & JSP > Servlet & JSP 공부' 카테고리의 다른 글
[자바웹을다루는기술] 서블릿 속성과 스코프 (0) | 2022.02.17 |
---|---|
[자바웹을다루는기술] 쿠키란? (0) | 2022.02.15 |
[자바웹을다루는기술] 바인딩 (0) | 2022.02.15 |
[자바웹을다루는기술] 서블릿의 여러가지 포워드 방법 (0) | 2022.02.15 |
[자바웹을다루는기술] 서블릿을 이용한 여러가지 실습 예제 (0) | 2022.02.14 |