본문 바로가기

Spring

스프링 인코딩필터 커스터마이징 제대로 동작 안하는 오류 extends CharacterEncodingFilter

결론 : 인코딩필터 내에서는 request.getParameter("blahblah");  쓰면 안됩니다!!

왜 안되는지 이유는 모름!! 저는 저거때문에 인코딩필터가 안됬었어요 


스프링 내 프로젝트는 UTF-8 인데, 결제모듈은 EUC-KR 로 통신한다고한다..
web.xml에 기본으로 적용되어있는 CharacterEncodingFilter에서 UTF-8로 다 필터처리를 하는데요

결제모듈관련된 부분을 EUC-KR로 예외처리를해줘야되는데..
기본으로 적용된거를 어떻게 예외처리를 할수가 없었어요

그래서 CharacterEncodingFilter를 상속받아다가 에외처리부분만 추가하면 되지않을까? 해서
했단말이에요? 그래서 적용을 했는데.. 안되는거에요; 자꾸 인코딩이 꺠지는거에요
설상가상으로 결제모듈말고 나머지 멀쩡한 다른곳 인코딩도 같이깨지는거에요..

이론상 완벽한데 뭐가 문제지?
해서 코드 한줄한줄 삭제해가면서 테스트해보니 원인을 알아냄

인코딩필터에서는 request.getParameter("blahblah");
저거 자체를 쓰면 안됩니다!! 모든 인코딩이 다 꼬여버려요..

예외처리할 페이지 제대로 확인하려고 콘솔창에 getParameter 뭐나오나 띄울려고 추가했는데..
저거때문이었음.. 그냥 getParameter 주석처리하는순간 정상동작 바로 해버림

request.getHeader("referrer");
이걸로 어차피 예외페이지인지 아닌지 구분할수있었긴했는데
혹시나해서 파라미터로 이중 체크를 했거든요..

누가 인코딩필터에서는 저거 쓰지말라고 나한테 가르쳐줬어야지 아무도 안가르쳐줌;;
내 예상으로는 필터에서 인코딩처리를 해야되는데
처리하기도전에 getParameter로 값을 불러와버리니까
인코딩도못하고 그냥 꼬여버리는? 그런게 아닌가 싶네요..