티스토리 뷰

학교공부/JSP

JSP - 10

날따라해봐요요롷게 2021. 4. 15. 20:10

<출처 : 쉽게 배우는 JSP 웹 프로그래밍>

 

필터 : 로그 기록하기

  • 필터의 개요
  • Filter 인터페이스의 구현 클래스
  • web.xml 파일의 필터 구성

 

#필터의 개요

- 필터는 유저와 서버 사이에서 request와 response 객체를 먼저 받아 사전/사후 작업을 하는 것을 말한다.

유저의 request가 jsp 컨테이너 안의 html, JSP, 서블릿을 만나기 전에 필터를 거쳐 전처리를 한다.

또한 정적 리소스인 (JSP, HTML 서브릿)에서 유저에게 가기 전에 필터를 거쳐 전처리를 한다.

 

웹 어플리케이션에 필터 기능을 사용하기 위해서는

- Filter 인터페이스 구현하는 자바 클래스 생성

- web.xml 에 생성한 자바 클래스를 등록한다.

 

필터의 기능

필터 기능
Request 필터 - 사용자 인증
- 요청 정보를 로그 파일로 작성
- 암호화 인코딩 작업
Response 필터 - 응답 결과 데이터 압축
- 응답 결과에 내용 추가/수정
- 총 서비스 시간 측정

 

#Filter 인터페이스의 구현 클래스


Filter 인터페이스 구현을 위해서 클래스 생성 -> javax.servlet.Filter 를 import 해야 함

 

import javax.servlet.Filter;

public class 클래스이름 implements Filter {

    .....

}

 

Filter 인터페이스 메소드의 종류 (오버라이딩 해야한다.)

  • init() 필터 인스턴스의 초기화 메소드
  • doFilter() : 필터 기능을 작성하는 메소드
  • destroy() : 필터 인스턴스의 종료 전에 호출되는 메소드

## init() 메소드

 : public void init(FilterConfig filterConfig) throws ServletException

JSP 컨테이너가 필터를 초기화할 때 호출되는 메소드이다.

init() 메소드는 JSP 컨테이너에 의해 호출되어 필터의 서비스가 시작되고 있음을 나타낸다.

 

FilterConfig 인터페이스 메서드 종류

  •  getFilterName() : web.xml 파일에 설정된 필터 이름을 반환
  •  getInitParameter() : web.xml 파일에 설정된 매개변수에 대한 매개변수 반환
  • getInitParameterNames() : web.xml 파일에 설정된 모든 매개변수 이름을 갖는 Enumeration 객체 반환
  • getServletContext() : ServletContext 객체 반환

## doFilter() 메서드

: JSP 컨테이너가 필터를 리소스에 적용할 때마다 호출되는 메서드로 init() 후에 호출된다.

filter가 어떤 기능을 수행할 필요가 있을 때마다 호출

 

public void doFilter(ServletRequest request, ServletResponse reponse, FilterChain chain) throws

java.io.IOException, ServletException

 

ServletRequest, ServletResponse 객체는 chain을 따라 요청하거나 응답한다.

FilterChain 객체는 체인에서 다음 필터를 호출하는 데 사용된다. 만약 호출 필터가 마지막이면 리소스를 호출

 

##destroy() 메서드

 : 필터 인스턴스를 종료하기 전에 호출하는 메서드이다.

필터 인스턴스를 삭제하기 전에 청소 작업을 수행, 필터로 열린 리소스를 모두 닫는 것을 수행한다.

필터의 수명 동안 한 번만 호출된다.

 

#web.xml 파일의 필터 구성

 

: 필터를 사용하려면 어떤 필터가 어떤 리소스에 대해 적용되는지 JSP 컨테이너에 알려주어야 한다.

이는 web.xml 파일에 필터를 설정하여 진행한다.

 

# <filter>를 구성하는 요소

  • <filter-name> : 필터 이름 설정
  • <filter-class> : 자바 클래스 이름 설정
  • <init-param> : 매개변수와 값을 설정 - <param-name> , <param-value>

 

#<filter-mapping> 을 구성하는 요소

  • <filter-name> : 필터 이름 설정
  • <url-pattern> : URL 패턴 설정

<filter>
   <filter-name> </filter-name>
   <filter-class></filter-class>
   [<init-param>
      <param-name></param-name>
      <param-value></param-value>
   </init-param>]
</filter>
<filter-mapping>
  <filter-name></filter-name>
  <url-pattern></url-pattern>
</filter-mapping>

 

# <filter> 요소

 : 필터 요소는 웹 애플리케이션에서 자바 필터와 매개변수를 설정하는 데 사용한다.

<filter> 
<filter-name>필터이름</filter-name> 
<filter-class>클래스 이름</filter-class> 
[<init-param> 
<param-name>매개변수 이름</param-name> 
<param-value>매개변수 값</param-value> 
</init-param>] 
</filter> 

 

<init-param> 요소에 설정된 매개변수와 값을 자바, JSP 코드에 접근하는 방식

String value = getServletConfig().getInitParameter("매개변수 이름");

 

<init-param> 요소를 이용하여 매개변수와 값을 설정하는 방식

필터가 초기화될 때, 필터의 init() 메서드가 호출될 때 전달되는 매개변수와 값을 설정

 

<filter> 
  <filter-name>MyFilter</filter-name> 
  <filter-class>ch12.com.filter.LoggingFilter</filter-class> 
  [<init-param> 
    <param-name>param</param-name> 
    <param-value>admin</param-value> 
  </init-param>] 
</filter> 

요소에 설정된 매개변수와 값을 자바 클래스에서 접근하려면

String value = getServletConfig().getInitParameter("param");

 

#<filter-mapping> 요소

 : 특정 리소스에 대해 어떤 필터를 사용할지 설정함.

<filter-mapping> 
  <filter-name> 필터이름 </filter-name> 
  <url-pattern> 요청 URL 패턴(주소) </url-pattern> 
</filter-mapping>

모든 리소스에 대해서 MyFilter를 적용하는 방식

<filter-mapping> 
  <filter-name> MyFilter </filter-name> 
  <url-pattern> /* </url-pattern> 
</filter-mapping>

 

 

<출처 : 쉽게 배우는 JSP 웹 프로그래밍>

'학교공부 > JSP' 카테고리의 다른 글

chapter - 13 (세션)  (0) 2021.05.16
JSP - 8  (0) 2021.04.17
JSP - 9  (0) 2021.04.06
JSP - 7  (0) 2021.03.24
JSP - 4  (0) 2021.03.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함