필터(Filter)는
요청을 받고나서, 응답을 하기전(동작 메서드 실행 전후)에 필터링을 하는 것이다.
웹 컴포넌트에 공통적으로 처리 할 부분을 모듈화하여 쉽게 처리가능하며 Tomcat javax.servlet 패키지에 구현되어있다.
web.xml에서 Web Application에 필터 등록
<filter>
<filter-name>LoginCheck</filter-name>
<filter-class>filter.LoginCheckFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginCheck</filter-name>
<url-pattern>/board/*</url-pattern>
</filter-mapping>
web.xml
-
<filter>
- <filter-name>: 등록할 필터의 이름을 지정한다.
- <filter-class>: 필터 클래스을 지정한다.
-
<filter-mapping>
- <filter-name>: url과 매핑 시키고 싶은 필터의 이름을 지정한다. 이때 필터의 이름은 filter태그에서 지정한 이름을 입력한다.
- <url-pattern>: 매핑시키고싶은 url을 지정한다.
javax.servlet.Filter 인터페이스 구현
public class LoginCheckFilter implements Filter {
private String[] parameterNames = null;
@Override
public void init(FilterConfig config) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpSession session = httpRequest.getSession(false);
boolean login = false;
// 세션 존재 여부
if(session != null) {
// 세션에 MEMBER라는 이름으로 존재여부
if(session.getAttribute("MEMBER") != null) {
login = true;
}
}
if(login) {
chain.doFilter(request, response);
}
else {
RequestDispatcher dispatcher = request.getRequestDispatcher("/filter/loginForm.jsp");
dispatcher.forward(request, response);
}
}
@Override
public void destroy() {}
}
LoginCheckFilter.java
init(), destroy()를 이용해 생성과 소멸시 필요한 행동을 취할 수 있고, doFilter()메서드를 통해 요청과 응답을 다음 루틴으로 전송한다.
728x90
반응형