response.setCharacterEncooding
이렇게 ?는 아예 보낼 때부터 인코딩이 안된 경우이므로
reponse.setCharacterEncooding("UTF-8")
reponse.setContentType
이건 보낼 때는 잘 보냈는데 받을 때 인코딩이 안된 경우
reponse.setContentType("text/html; charset=UTF-8")
= 이건 html 문서인데 UTF-8로 문자를 읽어라
POST 제출시 한글 깨지는 문제
전달할 때 깨진걸까? 출력하면서 깨진걸까?
이 설정으로 서블릿에서 화면으로 reponse 보낼 때, 그리고 그 화면에서 받을 때 둘 다 UTF-8로 인코딩 잘 되어있음
그렇다면 문제는, POST form에서 UTF-8인 한글로 정보를 보냈는데 UTF-8로 안 받아서 깨지는 것!
request.setCharacterEncooding
서블릿에다 사용자 전달 값request
을 읽어들이기 전에 utf-8으로 읽어들이겠다 라는 설정을 먼저 하고 파라미터를 읽어야함
request.setCharacterEncooding("UTF-8")
Servlet의 필터 interface 상속받아서 생성
<filter-class>
: 위의 filter 내용 쓴 파일 경로(패키지 포함)
이렇게 하면 /* 모든 url에 대해서 characterEncodingFilter
가 적용됨
근데 filter 출력문은 나오는데 원래 reg 내용은 안나올까?
cha-Filter
클래스의 hello filter가 실행은 됐는데 , 이 흐름을 다음으로 넘겨줄 것인가를 결정하는 것
before filter
chain.dofilter(request, reponse)
로 다음 필터 또는 서블릿이 실행되게 흐름을 넘김 : 조건 등을 통해서 흐름을 관할after filter
실행됨우리는 모든 서블릿이 실행되기 전에 인코딩 작업을 하려고하기 때문에 dofilter 전에 넣어주면 됨
매핑할 주소만 적용하려고 만든 필터 클래스 위에 @WebFilter로 넣어주면
: web.xml의 <filter>
설정 모두 대체 가능!