개발_웹/Java

Java | 필터를 이용한 한글 인코딩

zuyo 2021. 5. 26. 08:42
반응형

한글 인코딩 방법들

  • 페이지마다 request, response 객체에 setEncoding 해주기 (코드의 중복, 비추천)
  • Tomcat 서버 자체에서 인코딩
  • 필터(Filter) 사용 (추천)
  • 인터셉터(Interceptor) 사용 (추천, Spring Framework 사용시)

 


필터를 이용한 한글 인코딩

 

1) Filter을 생성

 

2) 어노테이션 추가

@WebFilter("/*") // 모든 페이지에 대해 필터 적용을 의미

3) 필드 작성

private static final String ENCODING = "UTF-8";
private static final String CONTENTS_TYPE = "text/html";

4) doFilter() 메소드만 사용. 내용은 다음과 같이

request.setCharacterEncoding(ENCODING);
response.setCharacterEncoding(ENCODING);
response.setContentType(CONTENTS_TYPE);

chain.doFilter(request, response);

ex)

package controller.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {

    private static final String ENCODING = "UTF-8";
    private static final String CONTENTS_TYPE = "text/html";

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding(ENCODING);
        response.setCharacterEncoding(ENCODING);
        response.setContentType(CONTENTS_TYPE);

        chain.doFilter(request, response);
    }

    public void init(FilterConfig fConfig) throws ServletException {
    }
}
반응형