개발기록/Java

Filter와 Wrapper

100'S 2022. 1. 13. 16:55

▶ 서블릿 필터와 래퍼 동작 구조 

 

▶ 서블릿 필터 동작 구조 

▶ Servlet Filter & Wrapper

Servlet Filter

javax.servlet.Filter인터페이스를 상속받아 구현하는 클래스
HTTP요청과 응답 사이에서 전달되는 데이터를 가로채 서비스에 맞게
수정하는 필터링 작업을 수행할 수 있는 클래스
웹 브라우저가 필요한 서블릿을 호출할 경우,
필터가 대신 호출되어 전달받은 정보를 수정하고
서블릿에게 넘기는 일종의 ‘경유지’역할
Servlet과 init이나 destroy, doGet처럼 비슷한 모습을 보이며
Request는 보안 관련 사항, 요청 헤더와 바디 형식 지정,
요청에 대한 log 기록 유지 등을 처리하고
Response는 응답 스트림 압축, 응답 스트림 내용 추가 및 수정,
새로운 응답 작성 등 처리

 

 

Filter Interface

- init(FilterConfig config)
웹 컨테이너가 필터를 호출할 경우 해당 메소드가 호출되어
필터 객체를 생성하며 초기화
* 매개변수FilterConfig는web.xml에있는<filter>정보를가지고있음


- doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
필터가 수행될 때 구동하는 메소드로, 요청 객체와 응답 객체를 사용해 일련의 작업을 수행한 뒤
chain을 통해 가공된 값을 목적지로 전송


- destroy()
역할이 끝난 필터는 웹 컨테이너에 의해 해당 메소드를 호출하고 소멸

 

 

interface FilterChain

필터는 chain처럼 서로 연결되어 있는데 연결 되어있는 필터를 순차 별로 doFilter()메소드를 

이용해 실행시키는 인터페이스.

마지막 필터가 필터가 실행된 후에는 service()메소드를 실행시켜 서블릿의 메소드(doGet(), doPost()) 실행
* doFilter(ServletRequest req, ServletResponse) chain으로 연결되어 있는 다음 필터를 실행하는 메소드

 

 

Servlet Wrapper

필터 클래스로부터 전달받은 데이터를 가공하여 다시 필터에게 반환하는 클래스
데이터 가공이 필요한 시점이 요청일 경우 HttpServletRequestWrapper클래스를 통해 구현하고
응답일 경우 HttpServletResponseWrapper클래스를 통해 구현

 

 

Wrapper Class

- HttpServletRequestWrapper
요청한 정보를 변경하는 Wrapper클래스.

HttpServletRequest객체를 매개로 하는 생성자를 가짐

public SampleWrapper(HttpServletRequest wrapper){
	super(wrapper);
}

 

- HttpServletResonseWrapper
응답할 정보를 변경하는 Wrapper클래스.

HttpServletResponse객체를 매개로 하는 생성자를 가짐

public SampleWraper(HttpServletResponse wrapper){
	super(wrapper);
}

 

서블릿 필터와 래퍼 클래스를 사용해 다음과 같은 로직 구현 가능
1. 서비스 별 로그 기록
2. 이미지 변환 필터
3. 문자셋 변환 필터
4. 비밀번호 암호화 로직 구현
5. 사용자 인증 로직 구현

 

 

 

'개발기록 > Java' 카테고리의 다른 글

Ajax 예제  (0) 2022.01.19
서블릿 리스너 ( Servlet Listner)  (0) 2022.01.13
HttpServletRequest, HttpServletResponse 개념 이해  (0) 2022.01.13
HTTP란?  (0) 2022.01.13
Servlet(서블릿) + 예제  (0) 2022.01.12