Notice
반응형
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Archives
Tags
- 경주3박4일여행일정
- 경주프렙후기
- 하나은행 코딩 테스트 후기
- 금선사숙소
- 함수 이름
- 경주맛집추천
- nestjs #openai #api키 #호출방법 #ai활용 #ai연동 #aikey연결하기 #환경변수파일
- 서울템플스테이추천
- nestjs 프로젝트 생성 명령어
- 구글애드센스신청 #구글애드센스 #구글애드센스시작하는방법 #구글애드센스티스토리 #블로그에구글애드센스 #티스토리 #구글애드센스가입 #구글애드센스등록
- 경주프렙
- 진학사 코딩테스트 후기
- 경주술
- 황리단길자쿠지
- 경주11월날씨
- 서울템플스테이데이트
- 황리단길감성숙소
- 경주프렙칵테일
- 면접준비 #면접컨설팅 #면접질문 #면접모의질문 #답변구조화 #모의면접 #모의면접컨설팅 #면접컨설팅후기
- 금선사데이트
- 경주황리단길한옥숙소
- 경주전통주
- 템플스테이1월
- 경주황리단길자쿠지
- 경주한옥자쿠지숙소
- 진학사 어플라이 면접 후기
- nestjs 마이크로서비스 설치 시 발생하는 의존성 충돌 해결하기
- 경주동취
- 한옥녹턴
- 금선사템플스테이
notcherry
필터 본문
반응형
필터는 서블릿 필터라고도 하며 리스너와 마찬가지로 웹 앱을 지원하기 위한 특수한 형태의 서블릿이다. 클라이언트의 특정 요청에 따라 서블릿이나 JSP가 실행되기 전에 response 혹은 request 객체의 조작이나 추가적인 처리를 할 수 있다. 여러 개의 필터는 정해진 순서대로 요청 처리 전에 먼저 실행된다. 리스너처럼 기능만 구현하는 웹 프로그램의 경우에는 필터가 불필요하다. 하지만 앱 설계 관점에서 더 효과적인 앱 구현 및 운영이 필요하다고 판단되면 필터를 이용하는 것이 좋다.
필터의 구조와 동작 과정
필터는 톰캣 서버를 시작할 때 필터 구현 클래스의 어노테이션을 참조하여 인터페이스를 구현한 클래스가 초기화된다. 또한 필터는 여러 개 존재할 수 있으며 필터는 각각 init() 메소드를 통해 초기화한다. 그리고 클라이언트 요청에 따라 서블릿이나 JSP가 호출되면, 어노테이션으로 설정된 필터 매핑 정보를 참조하여 서로 다른 필터를 적용할 수 있다.
doFilter()는 해당 필터가 적용되었을 때 수행할 작업을 구현하는 메인 메서드가 된다.
위의 그림은 A필터는 모든 서블릿에 적용되고, B필터는 서블릿 a, b에, C필터는 서블릿 a,b,c에 적용되는 상황이다. 필터에 순서가 정해져있다는 말은 서블릿a 입장에서 보면 필터 A -> B-> C 순서대로 거친다는 말이다. 필터의 적용은 doFilter 메소드로 수행되고 servletRequest와 servletResponse의 내용을 가로채 필요한 작업을 수행하고 다음필터로 전달하거나 요청한 서블릿으로 이동한다. 필터를 의도한 순서에 맞춰 적용하기 위해서는 web.xml을 이요한 필터 등록이 필요하고, url 매핑 규칙을 잘 만들어 두어야 한다.
필터가 활용되는 예
- 인증 - 페이지에서 로그인 여부나 특정 권한을 확인할 때 컨트롤러에서 처리하는 방법처럼 공통된 기능을 개별 컨트롤러에서 중복해서 구현하는 것은 추천하지 않는 방법이다. 이 경우 필터를 이용하면 앱 구조와 상관없이 기존 소스를 최대한 수정하지 않고 인증 기능을 수행할 수 있다.
- 로깅/감사 - 특정 페이지 혹은 기능에 대해 현황을 모니터링할 때 필터를 통해 요청을 수행하기 전 로깅 처리를 할 수 있다.
- 국제화 - 다국어 처리시 이용할 수 있다.
반응형
'Java > 공부' 카테고리의 다른 글
[자바] split 사용 방법 (0) | 2023.10.31 |
---|---|
큐 (0) | 2023.08.13 |
리스너 (0) | 2023.08.10 |
Servlet과 JSP(Java Server Pages) (0) | 2023.08.08 |
[Hashmap] .getOrDefault(key, defaultValue) (0) | 2023.07.25 |