-
[spring] CharacterEncodingFilterJAVA 2021. 8. 12. 15:51
characterEncodingFilter.java 파일 입니다.
protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String encoding = getEncoding(); if (encoding != null) { if (isForceRequestEncoding() || request.getCharacterEncoding() == null) { request.setCharacterEncoding(encoding); } if (isForceResponseEncoding()) { response.setCharacterEncoding(encoding); } } filterChain.doFilter(request, response); }
web.xml 에서 encoding 값을 주지 않으면 해당 필터는 동작하지 않습니다. encoding 값이 null 이 아닌 경우만 동작하도록 되어 있습니다.
web.xml 에서 forceEncoding 을 true로 설정한 경우 HttpServletResponse 에도 Encoding 설정을 해줍니다. forceEncoding 을 true로 설정하지 않은 경우 HttpServletRequest에 encoding 설정이 되어 있다면 filter에서는 encoding을 해주지 않습니다.
encoding 설정을 강제하고 싶고 HttpServletResponse 에도 인코딩 설정을 해주고 싶다면 init-param 에서 forceEncoding 을 true로 설정해 주세요.
HttpServletResponse에 인코딩 설정을 하지 않고 요청을 클라이언트단에 던저주면 깨지겠지만
클라이언트 단인 jsp 자체 내에서 인코딩 설정을 한다면 깨지지 않기 때문에 forceEncoding 를 true 하는 init-param 을 생략해도 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
출처: https://ixtears23.github.io/Encoding-%EC%84%A4%EC%A0%95/
'JAVA' 카테고리의 다른 글
[spring] 의존성 주입(DI) (0) 2021.08.13 [java] JSP, Servlet 의 기본 개념 및 MVC모델 (0) 2021.08.12 [mybatis] 스코프와 생명주기 (0) 2021.08.12 [mybatis] Mapper xml의 쿼리문과 매핑 원리 (0) 2021.08.12 [java] 디자인패턴 - Adapter (0) 2021.08.11