일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gcp
- kubernetes
- Google Cloud Platform
- Google Cloud Platorm
- Google Cloud Platrofm
- Google Cloud
- VPC
- Compute Engine
- Amazon Web Service
- GKE
- AWS 자격증
- Cloud Bigtable
- AWS
- Cloud Datastore
- 리버스 프록시
- AWS Certificate
- Kubernetes Engine
- AWS Solution Architect
- ansible
- AWS Database
- container
- 아마존웹서비스
- Solution Architect
- Cloud Storage
- Reverse Proxy
- Solution Architect Certificate
- playbook
- 앤서블
- Cloud Spanner
- Cloud SQL
- Today
- Total
sungwony
[웹프로그래밍] 필터 본문
필터 - '서블릿 실행 전후에 어떤 작업을 하고자 할 때 사용하는 기술'
클라이언트가 보낸 데이터의 암호를 해제한다거나, 서블릿이 실행되기 전에 필요한 자원을 미리 준비한다거나, 서블릿이 실행될 때마다 로그를 남긴다거나 하는 작업을 필터를 활용해서 처리할 수 있다.
필터 클래스는 javax.servlet.Filter 인터페이스를 구현해야 한다.
javax.servlet.Filter 인터페이스의 구현이 필요한 메소드는 다음과 같다.
init()
: 필터 객체가 생성되고 나서 준비 작업을 위해 딱 한 번 호출.
: Servlet 인터페이스의 init()와 같은 용도.
: 매개변수는 FilterConfig 객체이며, 이 객체를 통해 필터 초기화 매개변수의 값을 꺼낼 수 있다.
doFilter()
: 필터와 연결된 URL에 대해 요청이 들어오면 항상 호출되는 메서드
public void doFilter(ServletRequest request, ServletResponse response, FilterChain nextFileter) throws IOException, ServletException{
/* 서블릿 요청이 들어왔을 때 서블릿 실행 전 해야할 작업 */
//예제
request.setCharacterEncoding(config.getInitParameter("encoding"));
// 다음 필터를 호출. 더이상 필터가 없다면 서블릿의 service()가 호출된다
nextFilter.doFilter(request, response);
/* 서블릿을 실행한 후, 클라이언트에게 응답하기 전에 해야할 작업 */
}
destroy()
: 웹 애플리케이션을 종료하기 전에 호출하여 할당받은 자원을 해제하는 등의 마무리 작업을 수행.
*필터의 배치
1) DD 파일에 필터 배치 정보 설정
<!-- 필터 선언 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- 필터 URL 매핑 -->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
2) 애노테이션을 이용한 필터 배치
@WebFilter 애노테이션을 사용하면 필터의 소스 파일에 직접 배치 정보를 설정할 수 있다.
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@WebFilter(
urlPatterns="*.do",
initParams={
@WebInitParam(name="encoding", value="UTF-8")
})
public class CharacterEncodingFilter implements Filter{
...
}
※ WebFilter 애노테이션은 'javax.servlet.annotation.WebFilter'를 import 해야한다.
'development > 웹프로그래밍' 카테고리의 다른 글
[웹프로그래밍]포워딩과 인클루딩 (0) | 2017.05.26 |
---|---|
[웹프로그래밍]JSP (0) | 2017.05.23 |
[웹프로그래밍] 리프래시 / 리다이렉트 (0) | 2017.05.23 |
[웹프로그래밍]HTTP, GET, POST 이해하기 (0) | 2017.05.22 |
[기타]HTTP 프로토콜 (0) | 2017.03.29 |