일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 개발
- 설치
- objective-c
- 타입스크립트
- 코딩
- 상수
- SWIFT
- 웹개발
- 티스토리챌린지
- react
- TypeScript
- 스위프트
- c언어
- HTML
- JavaScript
- jsx.intrinsicelements 형식에 속성이 없습니다
- 자바스크립트
- 연산자
- 자바
- frontend
- 리액트
- Vue.js
- ios
- vuejs
- const
- C
- 오블완
- hooks
- 프론트엔드
- 조건문
- Today
- Total
스펜서 개발블로그
#12. JSP&Sevlet - 서블릿 필터(Sevlet Filter) 본문
서블릿 필터(Sevlet Filter)
java.servlet.Filter 인터페이스를 상속받아 구현하는 클래스이다.
HTTP 요청과 응답 사이에서 전달되는 데이터를 가로채어
서비스에 맞게 변경하고 걸러내는 필터링 작업을 수행한다.
요청과 응답의 처리 내용
Request: 보안 관련 사항, 요청 헤더와 바디 형식 지정, 요청 log 기록
Response: 응답 스트림 압축, 응답 스트림 내용 추가 및 수정, 새로운 응답 작성
코드 작성하는 법
1. DD설정 (Web.xml)
필터 설정
<filter>
<filter-name> 필터설정이름 </filter-name>
<filter-class> 필터를 구현한 클래스 </filter class>
<init param > // filter 에서 사용할 값 설정
<param name> 초기값 설정 이름 <param name>
<param value> 설정값 </param value>
</init param>
</filter>
필터 맵핑-1 .url 패턴 (우선적용)
<filter-mapping>
<filter-name> 등록된 필터이름 </filter-name>
<url-pattern> 요청한 페이지 형식 <url-pattern>
</filter-mapping>
필터 맵핑-2. 서블릿 매핑
<filter-mapping>
<filter-name> 등록된 필터이름 </filter-name>
<servlet-name> 적용할 서블릿명 </servlet name>
</filter-mapping>
2. 클래스 설정 (java)
public class EncodingFilter implements Filter { // 필터 인터페이스 상속
@Override
public void destroy() {
삭제시 작업 설정
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
필터링 할 작업 설정 (chain 작성 필요)
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
필터 호출시 작업 설정
}
필터 체인(Filter Chain)이란?
여러 개의 필터가 서로 연결되어 있고 순서대로 doFilter() 메소드를 이용하여 실행시키는 인터페이스이다.
chain과 doFilter() 메소드를 이용하여 다음 필터를 실행 할 수 있다.
예제
index
아이디와 비밀번호, 이름을 입력받아 회원가입 하는 페이지 작성 (Post방식)
web.xml
필터를 등록하고 매핑해준다.
encoding이라는 필터를 com.greedy.(중략).EncodingFilter 클래스에 구현을 하고,
필터의 초기값 이름은 encoding-type이고 필터 값(인코딩) UTF-8이다.
FirstFilter
필터에서 사용할 메소드를 가지고 있는 클래스
Filter 파일로 어노테이션 형식이 WebFilter이고 /first이하 모든 것을 mapping하였다.
(Filter 클래스는 Filter 인터페이스를 상속한다.)
init() 메소드로 필터가 호출되고, doFilter() 메소드는 Servlet으로 request가 전달되기 전에 가로채는 역할을 한다.
필터 인스턴스가 소멸될 때 호출되는 메소드이다.
EncodingFilter
필터를 사용하는 클래스로 해당 예제에서는 인코딩 처리를 하였다.
우선 init() 메소드를 상속 받아 모든 속성이 담겨 있는 filterConfig에서 getInitParameter() 메소드를 이용하여, 인코딩 타입(encoding-type)을 변수에 담아주었다.
그리고 doFilter에서 ServletRequest 타입인 request를 래퍼 클래스인 HttpServletRequest로 다운캐스팅하여, setCharacterEncoding() 메소드를 이용하여 인코딩을 해준다.
여기서 chain.doFilter(hrequest, response); 를 사용하여 다음 필터를 실행한다.
FirstFilterTestServlet
필터된 것을 응답해주는 서블릿이다.
'Front-End > JSP & Servlet' 카테고리의 다른 글
#16. JSP&Servlet - EL & JSTL (0) | 2021.05.06 |
---|---|
#15 . JSP&Servlet - JSP(Java Server Page) (0) | 2021.05.06 |
#11. JSP&Sevlet - 세션(Session) (0) | 2021.04.29 |
#7. JSP&Sevlet - Exception Handler (0) | 2021.04.27 |
#1. JSP&Servlet - 톰캣 설치 및 이클립스 설정 (0) | 2021.04.27 |