@ WebFilter 사용

3172 단어 spring
@WebFilter
@ WebFilter 는 클래스 를 필터 로 설명 하 는 데 사 용 됩 니 다. 이 주 해 는 배치 할 때 용기 에 의 해 처 리 됩 니 다. 용 기 는 구체 적 인 속성 설정 에 따라 해당 하 는 클래스 를 필터 로 배치 합 니 다.이 주 해 는 다음 표 에서 제시 하 는 일반적인 속성 을 가지 고 있 습 니 다. (아래 의 모든 속성 은 선택 가능 한 속성 이지 만 value, url Patterns, servletNames 세 가 지 는 적어도 하 나 를 포함 해 야 합 니 다. value 와 url Patterns 는 공존 할 수 없습니다. 동시에 지정 하면 value 의 값 을 무시 합 니 다)
표 3. @ WebFilter 의 상용 속성
속성 명
유형
묘사 하 다.
filterName
String
필터 의 name 속성 을 지정 합 니 다.
value
String[]
이 속성 은 url Patterns 속성 과 같 습 니 다.하지만 둘 다 동시에 사용 해 서 는 안 된다.
urlPatterns
String[]
필터 의 URL 일치 모드 를 지정 합 니 다.라벨 에 등가 하 다.
servletNames
String[]
필터 가 어떤 Servlet 에 적 용 될 지 지정 합 니 다.추출 값 은 @ WebServlet 의 name 속성의 추출 값 또는 웹. xml 의 추출 값 입 니 다.
dispatcherTypes
DispatcherType
필터 의 전송 모드 를 지정 합 니 다.구체 적 인 수 치 는 ASYNC, ERROR, FORWARD, INCLUDE, REQUEST 를 포함한다.
initParams
WebInitParam[]
태그 와 같은 필터 초기 화 파 라 메 터 를 지정 합 니 다.
asyncSupported
boolean
필터 가 탭 과 같은 비동기 작업 모드 를 지원 하 는 지 여부 입 니 다.
description
String
이 필터 의 설명 정 보 는 태그 와 같 습 니 다.
displayName
String
이 필터 의 디 스 플레이 이름 은 보통 도구 에 맞 춰 사용 되 며 태그 와 같 습 니 다.
다음은 간단 한 예 이다.
@WebFilter(servletNames = {"SimpleServlet"},filterName="SimpleFilter") 
public class LessThanSixFilter implements Filter{...}

이렇게 설정 하면 웹. xml 에 해당 하 는 요 소 를 설정 하지 않 아 도 됩 니 다. 용 기 는 배치 할 때 지정 한 속성 에 따라 이 종 류 를 필터 로 발표 합 니 다.등가 웹 xml 의 설정 형식 은 다음 과 같 습 니 다.
 
    SimpleFilter 
    xxx 
 
 
    SimpleFilter 
    SimpleServlet 

앞에서 알 수 있 듯 이 @ WebFilter 를 사용 하면 웹. xml 을 설정 한 것 과 같 습 니 다. 현재 eclipse 로 자동 으로 Filter 를 생 성 할 때 기본 값 은 이 주 해 를 제공 합 니 다. 아래 와 같 습 니 다.
package webcase;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
 
/**
 * Servlet Filter implementation class CountFilter
 */
@WebFilter("/CountFilter")
public class CountFilter implements Filter {
    private int count;
    private String param;
    private FilterConfig fConfig;
    /**
     * Default constructor.
     */
    /*public CountFilter() {
        // TODO Auto-generated constructor stub
    }*/
 
    /**
     * @see Filter#destroy()
     */

tomcat 가 순서대로 Filter 를 초기 화 하 는 것 을 알 고 있 습 니 다. 위의 코드 는 @ WebFilter ("/ countFilter") 를 포함 하고 있 기 때문에 웹. xml 에서 같은 필터 CountFilter 를 두 번 설정 한 것 과 같 습 니 다. 따라서 이 필 터 는 두 번 초기 화 되 기 때문에 @ WebFilter 가 설정 한 필터 가 초기 화 될 때 String param = getInitParameter ("count")받 은 문자열 이 비어 있 습 니 다. Integer. parseInt (param) 을 호출 할 때 NumberFormat Exception 이상 이 발생 합 니 다. @ WebFilter ("/ countFilter") 를 제거 하면 모든 것 이 정상 입 니 다.

좋은 웹페이지 즐겨찾기