겉바속촉

서블릿 필터 1 - web.xml 사용 본문

IT 일기 (상반기)/JAVA

서블릿 필터 1 - web.xml 사용

겉바속촉 2022. 6. 9. 13:54
728x90
반응형

 

서버에서 한글을 전달받지 못해서 따로 설정을 해줬었는데요

 

2022.06.08 - [IT 일기 (상반기)/JAVA] - 서버에서 한글 전달 못 받는 경우

 

서버에서 한글 전달 못 받는 경우

post 메서드를 공부하는 와중에 생긴 에러 바로 한글을 입력하면 깨지는 것 분명히 get메서드일때는 발생하지 않았기 때문에 이유를 몰랐습니당:) 2022.06.08 - [IT 일기 (상반기)/JAVA] - 입력폼에 쓸게

2-juhyun-2.tistory.com

 

 

WAS로 현재 톰캣을 사용중인데 클라이언트의 요청이 들어오면

적절한 소프트웨어를 사용하여 결과를 다시 반환시켜주는 원리입니다.

 

그리고 이 소프트웨어가 바로 서블릿이며 그 공간은 서블릿 컨테이너라고 해줍니다

서블릿을 실행시켜 컨테이너에 담아두고 결과를 다시 WAS로 전달받는 것입니다.

 

그래서 인코딩 설정을 할때 서블릿에다가 설정을 해준 것입니다.

즉, 입력을 받을 때마다 설정을 해주어야한다는 것인데

 

톰캣은 여러 어플리케이션을 서비스하는 컨테이너지만 어플리케이션마다 설정을 해주는 경우 비효율적이겠죠

그래서 WAS와 서블릿 사이에 한가지를 설치해줄 것입니다.

 

수문장 역할을 해주는 것을 만들려고 합니다

모든 서블릿이 가지고 있는 공통적인 것이 있다면 수문장에다가 그 기능을 넣어주는 것입니다.

필터 기능을 만들어주면 되겠네요:)

 

 

지난번에 추가해주었던 인코딩 중에서 마지막 줄을 주석처리 하겠습니다.

 

다음과 같이 만들어봤습니다.

 

 

1. 새로운 자바 파일 생성

이때 javax.servlet.Filter 인터페이스를 추가하여 만들어주어야합니다.

 

 

 

 

2. web.xml 파일에 내용 추가

 

예시)

필터 설정과 필터 매핑 설정해주는 것

특히 url-parttern에서 /* 이 표시는 어떤 요청이 오던간에 모두 실행하겠다는 뜻

 

그리고 주의할 점은 클래스 명을 입력할때 패키지명까지 무조건 같이 넣어주어야하는 것

 

 

 

3. 새로 만들어준 자바 파일에 인코딩 추가하기

 

여기서 봐야할 것은 FilterChain 

이 요소는 이 흐름을 다음으로 넘겨줄것인지, 말것인지 결정하는 역할을 수행

 

즉 chain.doFilter(req, resp)를 기준으로 수행이되는 것인데

윗줄 : 필터 수행 전에 출력

chain.doFilter(req, resp) : 다른 필터나 서블릿 수행

아랫줄 : 필터 수행 후에 출력

 

 

chain.doFilter(req, resp) --> 조건 검사를 통해 흐름을 원래대로 가게 할 것인지, 호출하지 않고 전이시킬 것인지를 관할

 

 

 

 

728x90
반응형