Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 2961 java
- 14711 타일 뒤집기
- java di
- django 프로젝트 시작
- 18233 비트마스킹
- 공유기 원격 설정
- 2643 java
- 2643 색종이 올려 놓기
- 1188 java
- 18233 러버덕
- 2661 좋은 수열
- 18233 java
- 2961 도영이가 만든 맛있는 음식
- django windows 배포 에러
- windows 원격 연결 설정
- django
- django apache deploy error
- APPEND_SLASH = FALSE
- django 웹 페이지
- 14711 java
- django settings.py
- 2661 java
- django The requested operation has failed!
- The requested operation has failed!
- 원격 연결 포트 포워딩
- Problems occurred while performing provisioning operation
- apache pythonpath
- 1188 음식 평론가
- windows apache wsgi 에러
- django httpd error
Archives
라이브러리는 도서관 아닌가요
JSP 6 - 서블릿의 필터 (filter) 본문
이전 포스트( JSP 5 - form 태그 POST 요청, HttpServletRequest의 메서드 )에서
HttpServletRequest에 존재하는 메서드들을 살펴보았다.
특정 메서드들을 통해 서블릿에 설정을 입힐 수 있는데,
각 서블릿 클래스마다 일일이 지정해줘야 하는 귀찮음이 존재한다.
따라서 filter라는 설정 파일을 통해 이를 일괄, 혹은 선택적으로
적용해주는 방법을 탐구해보자.
요청의 흐름
WAS → request → 필터 → Servlet Container (Servlet 생성) → 필터 → response → WAS
실행 흐름상 필터(filter)는 각각 생성되는 Servlet Container의 외곽에 위치한다.
말 그대로 필터로서 서블릿 이전에 미리 설정을 적용시키는 역할을 한다.
필터링한다고도 한다.
일반적으로 서블릿의 Filter는 interface Filter를 구현한 클래스로 파일을 생성한다.
서블릿에 적용시키는 방식을 살펴보자.
1. xml 설정 파일 사용
# java 파일
package myPackage
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class myFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
System.out.println("필터 초기화");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("myFilter 적용 전");
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
System.out.println("myFilter 적용 후");
}
public void destroy() {
System.out.println("필터 제거");
}
}
chain.doFilter(request, response);
→ request, response에 필터링 설정 적용
# web.xml
<filter-mapping>
<filter-name>내가 정의한 필터 클래스 이름</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
모든 url 영역(/*)에 대하여, 지정한 filter를 적용
2. @ 어노테이션 사용 (초간단해진다.)
# java 파일
package myPackage
import java.io.IOException;
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("/*")
public class myFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
System.out.println("필터 초기화");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("myFilter 적용 전");
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
System.out.println("myFilter 적용 후");
}
public void destroy() {
System.out.println("필터 제거");
}
}
@WebFilter("/*")에 영역만 String으로 추가해주면 된다.
'Java > JSP' 카테고리의 다른 글
JSP 7 - model 1 to model 2 (0) | 2022.02.09 |
---|---|
JSP 5 - form 태그 POST 요청, HttpServletRequest의 메서드 (0) | 2022.01.05 |
JSP 4 - GET 쿼리스트링 ( GET Query String ) (0) | 2022.01.04 |
JSP 3 - @WebServlet 어노테이션, 프로젝트 생성 (0) | 2022.01.04 |
JSP 2 - Context, Servlet Class (0) | 2022.01.04 |
Comments