일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Spring
- 배포
- autowired
- 알고리즘
- EC2
- CSS
- 도커
- 암호화
- Cookie
- jQuery
- node.js
- Ajax
- AWS
- SQL
- HTML
- model1
- 웹소켓
- PL/SQL
- websocket
- tiles.xml
- Servlet
- 비트코인
- 블록체인
- express
- RDS
- JSP
- docker
- JavaScript
- 웹게임
- phaser
- Today
- Total
記錄
Servlet) Filter 본문
필터(Filter)
필터란 서블릿 2.3 버전에 추가된 것으로, 클라이언트의 요청을 서블릿 받기 전에 가로채어 필터에 작성된 내용을 수행하는 것을 말한다. 따라서 필터를 사용하면 클라이언트의 요청을 가로채서 서버 컴포넌트의 추가적인 기능을 수행시킬 수 있다.
필터(Filter)의 기능 – 필터로 할 수 있는 것들
인증(사용자 인증)
로깅 및 감사 필터
이미지 변환
데이터 압축
암호화 필터
토크나이징(Tokenizing) 필터
XML 컨텐츠를 변형하는 XSLT 필터
Mime-Type 체인 필터
URL 및 기타 정보들을 캐시하는 필터
필터 적용 순서
1. 필터 인터페이스를 구현하는 자바 클래스를 생성
2. /WEB-INF/web.xml 에 filter 엘레멘트를 사용하여 필터 클래스를 등록
필터의 라이프 사이클
필터는 서블릿과 비슷한 라이프 사이클을 가지며 생성, 초기화, 필터, 종료의 4단계로 이루어진다. 또한, 서블릿 컨테이너는 필터 객체가 초기화 파라미터에 접근하는데 사용하는 환경설정 객체(FilterConfig)의 레퍼런스를 제공한다.
서블릿 컨테이너가 필터의 init() 메소드를 호출하면 필터 인스턴스는 바로 요청을 처리할 수 있는 상태가 된다. 서블릿이 service() 메소드를 이용해서 요청을 처리한 것처럼 필터는 doFilter() 메소드를 통해서 요청을 처리한다. 모든 요청에 대한 처리가 끝나면 destory() 메소드가 호출되면서 필터는 비활성 상태로 변경된다.
필터 클래스
필터 클래스는 javax.servlet.Filter 인터페이스를 구현해야 한다. Filter 인터페이스는 init(), doFilter(), destroy() 메소드를 정의 되어있으며, 각각의 메소드의 역할을 다음과 같다.
– init(FilterConfig config) : void throws ServletException
서블릿 컨테이너가 필터 인스턴스를 초기화하기 위해서 호출하는 메소드
– doFilter(ServletRequest req, ServletResponse res, FilterChain chain) : void throws IOException, ServletException
필터의 로직을 작성하는 메소드
– destroy() : void
필터 인스턴스를 종료시키기 전에 호출하는 메소드
출처 : https://sbsjavaprg.wordpress.com/2014/02/18/%EC%84%9C%EB%B8%94%EB%A6%BF-%ED%95%84%ED%84%B0filter-%EC%84%A4%EB%AA%85-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95/
web.xml
filter
cf) 모든 필터의 chain.doFilter(request, response) 이전의 모든 로직을 실행하고 나서 chain.doFilter() 이후의 로직을 처리. Filter들이 체인처럼 엮여있다
'Web > Servlet' 카테고리의 다른 글
Servlet) 파일 업로드 (0) | 2018.04.04 |
---|---|
Servlet) "?cmd=~" vs @WebServlet("*.do") (0) | 2018.04.03 |
Servlet) 커넥션 풀(DBCP) (0) | 2018.03.29 |
Servlet) 예제(단순 알림 or 객체 전달) (0) | 2018.03.29 |
Servlet) out.print()에 대한 이해 (0) | 2018.03.29 |