본문 바로가기

JSP

filter jsp

필터는 클라이언트와 서버 사이에서 request와 response 객체를 먼저 받아 사전/사후 작업 등 공통적으로 필요한 부분을 처리하는 것을 말한다. 필터는 클라이언트의 요청이 웹 서버의 서블릿, jsp, html 페이지 같은 정적 리소스에 도달하기 전과, 반대로 정적 리소스에서 클라이언트로 응답하기 전에 필요한 전처리를 가능하게 한다. 필터는 http요청과 응답을 변경할 수 있는 코드로 재사용이 가능하고 클라이언트와 정적 리소스 사이에 여러개의 필터로 이루어진 필터 체인을 제공하기도 한다. 이처럼 웹 앱에서 필터 기능을 제공하기 위해 Filter 인터페이스를 구현하는 자바 클래스를 생성하고 생성된 자바 클래스를 web.xml 파일에 등록한다.

1)request 필터 : 사용자 인증, 요청 정보를 로그 파일로 작성, 암호화 인코딩 작업
response 필터 : 응답결과 데이터 압축, 응답 결과에 내용 추가/수정, 총 서비스 시간 측정 등

Filter 인터페이스
-필터 기능을 구현하는데 핵심적인 역할을 함
필터 기능을 구현하기 위해서는 자바 클래스로 작성해야 하며 Filter 인터페이스를 구현해야 한다.

init() : 필터 인스턴스의 초기화 메소드, jsp 컨테이너 내에서 초기화 작업을 수행할 필터 인스턴스를 생성한 후 한 번만 호출, jsp 컨테이너에 의해 호출되어 필터의 서비스가 시작되고 있음을 나타낸다.

filterConfig 인터페이스 메소드의 종류
getFilterName() : web.xml 파일에 설정된 필터 이름을 반환
getInitParamerter(String name) : web.xml 파일에 설정된 매개변수에 대한 매개변수 값을 반환, 초기화 매개변수가 존재하지 않으면 null을 반환한다.
getInitParameterNames() : web.xml 파일에 설정된 모든 매개변수 이름을 포함하는 Enumeration 객체 타입을 반환한다. 초기화 매개변수가 존재하지 않으면 비어있는 Enumeration을 반환
getServletContext() : ServletContext 객체를 반환한다.

doFilter() : 필터 기능을 작성하는 메소드, jsp 컨테이너가 필터를 리소스에 적용할 때마다 호출되는 메소드, init() 메소드 후에 호ㅜㄹ되며, 필터가 어떤 기능을 수행할 필요가 있을때마다 호출
doFilter(ServletRequest request, ServletResponse response) : 체인의 다음 필터 또는 리소스로 제어를 전달한다.

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws java.io.IOException, ServletException 
-첫번째 매개변수 ServletRequest 체인을 따라 전달하는 요청이고,
-두번째 매개변수 ServletResponse 객체는 체인을 따라 전달할 응답
-세번째 매개변수 FilterChain 객체는 체인에서 다음 필터를 호출하는 데 사용(만약 호출 필터가 체인의 마지막 필터이면 체인의 끝에서 리소스를 호출)

destroy() : 필터 인스턴의 종료 전에 호출되는 메소드, jsp 컨터이너가 필터 인스턴스를 삭제하기 전에 청소 작업을 수행하는 데 사용되며, 이는 필터로 열린 리소스를 모두 닫을 수 있는 방법이다.
필터의 수명 동안 한번만 호출

web.xml 파일에 필터를 설정
-필터를 사용하려면 어떤 필터가 어떤 리소스에 적용되는지 jsp컨테이너에 알려주어야 함
<filter(웹 애플리케이션에서 자바 필터와 매개변수를 설정하는데 사용)와 <filter-mappint>(특정 리소스에 대해 어떤 필터를 사용할지 설정하는데 사용)요소를 사용
-web.xml 파일에 여러 개의 필터가 설정되어 있으면 선언된 순서대로 실행
<filter>의 하위 요소
<filter-name> : 필터 이름 설정
<filter-class> : 자바 클래스 이름을 설정
<init-param> : 매개변수와 값을 설정

<filter-mapping>의 하위 요소
<filter-name> : 필터 이름 설정
<url-pattern> : URL 패턴을 설정
/* : 모든 요청 url과 일치하는 경로로 매핑한다는 의미

'JSP' 카테고리의 다른 글

cookie  (0) 2023.07.12
session.jsp  (0) 2023.07.10
프로그래밍적 시큐리티&예외처리 jsp  (0) 2023.07.06
다국어 처리, 시큐리티 jsp  (0) 2023.07.05
정규표현식 유효성 검사  (0) 2023.07.04