[JSP] 한글 처리

max9106·2020년 1월 13일
0

[JSP]JSP기초

목록 보기
13/19

jsp나 servlet에서 한글을 그냥 사용하려고 하면 제대로 읽어오지 못한다. 영어는 1 byte지만, 한글은 2 byte이기 때문이다.

euc-kr 도 사용가능하지만, utf-8이 지원하는 것이 많으므로 utf-8로 encoding 하겠다.

post 방식

servlet 파일

post 방식일 때, jsp -> servlet으로 데이터가 넘어오는 경우 servlet에서 한글을 지원받으려면, 아래와 같은 코드를 넣어주어야한다.

        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

jsp 파일

post 방식일 때, jsp -> jsp로 데이터가 넘어오는 경우 jsp 파일 상단에 아래와 같은 코드를 넣어준다.

<% request.setCharacterEncoding("UTF-8");%>

get 방식

get 방식을 사용할 때는 server.xml 파일을 수정해야한다. intellij를 사용할 경우 server.xml에 접속하려면, 아래 경로로 접근하면 된다.
[다운받았던 tomcat 디렉토리 -> conf -> server.xml]

connector 부분을 찾아서 URIEncoding="UTF-8"을 속성값으로 넣어주면 끝이다.

Filter 사용하기

위의 방법으로 한글처리를 할 때, post방식을 사용하는 곳이 많아지면 일일히 위의 코드를 넣어주는 것은 매우 비효율적이다.

이런 경우, filter를 사용해서, 통신할 때 마다, filter를 거쳐 한글처리를 해 줄 수 있다.

filter는 인터페이스이므로, 사용자가 따로 구현해주어야한다.
총 3가지를 구현해야한다.

  1. init - 생성

2. doFilter - 실제 필터 기능

  1. destroy - 파괴

doFilter 부분에는 filterChain.doFilter 로 요청과 응답 객체를 이용해 필터를 실행시켜줘야한다. filterChain.doFilter 전 부분이 필터를 거치기 전에 온 요청이고, 후 부분은 response 부분이다. 따라서 filterChain.doFilter전에 setCharacterEncoding("UTF-8")을 해주면, 한글처리를 하겠다는 뜻이다.

이렇게 필터를 만들어줬으면 web.xml에 등록해주어야한다.
은 이 filter의 닉네임이고,
는 이 filter가 속한 패키지를 포함한 풀 경로이다.
filter-mapping의 에 /*를 적어준 것은 서버에 들어오는 모든 요청이 이 filter를 거치게 하라는 의미이다.

profile
이전 블로그: https://blog.naver.com/max9106

0개의 댓글