본문 바로가기

Servlet&JSP

Fillter

필터(Filter)

 

요청을 받고나서, 응답을 하기전(동작 메서드 실행 전후)에 필터링을 하는 것이다.

웹 컴포넌트에 공통적으로 처리 할 부분을 모듈화하여 쉽게 처리가능하며 Tomcat javax.servlet 패키지에 구현되어있다.

 

filter

 

 

 

 

 

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

  1. <filter>

    1. <filter-name>: 등록할 필터의 이름을 지정한다.
    2. <filter-class>: 필터 클래스을 지정한다.
  2. <filter-mapping>

    1. <filter-name>: url과 매핑 시키고 싶은 필터의 이름을 지정한다. 이때 필터의 이름은 filter태그에서 지정한 이름을 입력한다.
    2. <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
반응형