파라미터 값의 인코딩 처리
웹 브라우저 : 웹 서버에 파라미터를 전송할 때 알맞은 캐릭터 셋을 이용해서 파라미터 값을 인코딩
웹 서버 : 알맞은 캐릭터 셋을 이용해 웹 브라우저가 전송한 파라미터 데이터를 디코딩
- 웹 브라우저가 'UTF-8' 을 이용해 인코딩 했다면 웹서버는 'UTF-8' 을 이용해 파라미터 값을 디코딩해야 올바른 파라미터 값을 사용할 수 있다.
- 웹 브라우저가 인코딩 할 때 사용할 캐릭터 셋과 웹 서버가 디코딩할 때 사용한 캐릭터 셋이 다를 경우 웹 서버가 잘못된 파라미터 값을 사용한다.
GET & POST 방식에 따라 사용하는 캐릭터 셋이 달라진다.
▣ POST : 입력 폼을 보여주는 응답 화면이 사용하는 캐릭터 셋을 사용
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> |
* 서버에서 파라미터 값을 알맞게 사용하려면 웹 브라우저가 파라미터 값을 인코딩할 때 사용한 캐릭터 셋을 이용하여 디코딩(decoding) 해준다.
- setCharacterEncoding() 메서드 : 파라미터 값을 디코딩할 때 사용할 캐릭터 셋을 지정할 수 있다.
1 2 3 4 5 | <!-- 요청 파라미터의 캐릭터 인코딩을 utf-8로 지정 --> <% request.setCharacterEncoding("utf-8"); %> | cs |
- request.setCharacterEncoding() 메서드를 이용해 파라미터 값을 디코딩할 때 사용할 캐릭터 셋을 지정하면 request.getParameter() 메서드나 request.getParameterValues() 메서드를 이용해 파라미터 값을 알맞게 읽어올 수 있다.
- request.setCharacterEncoding() 메서드는 파라미터 값을 사용하기 전에 실행해 주어야한다.
- 캐릭터 셋을 지정하지 않을 경우 기본 캐릭텃 셋 : ISO-8859-1
▣ GET : 파라미터 전송은 3가지의 방법이 있으며 각 방법에 따라 캐릭터 셋이 달라질 수 있다.
GET 방식 이용시 파라미터 전송 방법 |
인코드 결정 |
<a> 태그의 링크에 쿼리 문자열 추가 |
웹 페이지 인코딩 사용 |
HTML 폼(FORM) 의 method 속성 값을 "GET"으로 지정해서 폼을 전송 |
웹 페이지 인코딩 사용 |
웹 브라우저에 주소에 직접 쿼리 문자열 포함한 URL 입력 |
웹 브라우저 마다 다름 |
방법 1 : <a> 태그의 링크에 쿼리 문자열을 추가
<a href="viewParameter.jsp?name=yayeun&address=seoul">링크</a> |
- 웹 브라우저는 사용자가 링크를 클릭하면 POST 방식의 경우와 같이 웹 페이지의 캐릭터 셋을 이ㅇ해서 파라미터를 인코딩 한다.
방법 2 : HTML 폼을 이용해서 GET 방식으로 파라미터를 전송하는 경우에도 웹 페이지의 인코딩을 이용해서 파라미터 값을 인코딩
1 2 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> | cs |
- 생성된 웹 페이지에서 폼을 전송하면 웹 브라우저는 UTF-8 캐릭터 셋을 이용해 파라미터 값을 인코딩
방법 3 : 웹 브라우저의 주소에 직접 쿼리 문자열을 입력하는 경우
- 웹 브라우저에 따라서 선택하는 캐릭터 셋이 달라질 수 있다.
http://localhost/test/viewParameter.jsp?name=조예은 |
- 인터넷 익스플로러 구 버전은 EUC-KR 캐릭터 셋을 이용해 파라미터 값을 인코딩한 URL을 웹 서버에 요청한다.
- 크롬의 경우 파라미털 값을 UTF-8 캐릭터 셋을 이용해 인코딩한 URL 을 웹 서버에 요청한다.
▣ GET 방식으로 전달되는 파라미터 값에 대한 표준 인코딩 규칙이 정해져 있지 않기 때문에 WAS 마다 GET 방식의 파라미터 값을 읽어 올 때 사용하는 기본 캐릭터 셋도 다르다.
▣ GET 방식으로 전송된 파라미터에 대해서는 request.setCharacterEncoding() 메서드로 지정한 캐릭터 셋이 적용되지 않는다.
'JSP' 카테고리의 다른 글
request 기본 객체 06_요청 헤더 정보의 처리 (0) | 2016.05.31 |
---|---|
request 기본 객체 05_톰캣에서 GET 방식 인코딩 처리 (0) | 2016.05.31 |
request 기본 객체 03_GET 방식 전송과 POST 방식 전송 (0) | 2016.05.31 |
request 기본 객체 02 (0) | 2016.05.28 |
request 기본 객체 01 (0) | 2016.05.28 |