본문 바로가기
Backend/JAVA

MVC Servlet - controller 작성하기 - Filter

by YERIEL_염주둥 2020. 5. 14.
728x90

Filter는 의무는 아니지만 상황에 따라 적용할 수 있다.

 

 

 

package kr.or.ksmart.filter;

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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebFilter("/")
public class MyFiter implements Filter {


	public void destroy() {
	}
	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		System.out.println("/호출");
		
		/*
		 * HttpServletRequest, HttpServletResponse으로 이미 객체화가 되어있으므로 
		 * ServletRequest, ServletResponse으로 다운 캐스팅 가능
		 */
		HttpServletRequest rq = (HttpServletRequest) request;
		HttpServletResponse re = (HttpServletResponse) response;
		
		String uri = rq.getRequestURI();
		String contextPath = rq.getContextPath();
		uri = uri.replace(contextPath, "");
		
		if("/".equals(uri)|| "/*.do".equals(uri)) {
			re.sendRedirect(rq.getContextPath()+"/main.do");
			
		}else {
        /*
		 * doFilter 메서드는 정상적으로 다음 페이지가 작동 될 경우에만 실행한다. (forward같은 개념인듯)
		 * (정상적으로 다음 서블릿이 실행되어야 할 경우에만 실행 되도록 코드 작성) 
		 */
			chain.doFilter(request, response);
			
		}

	}

	
	public void init(FilterConfig fConfig) throws ServletException {
		
	}

}
반응형

'Backend > JAVA' 카테고리의 다른 글

JAVA 예외 던지기 Throw  (0) 2020.05.20
JAVA 예외처리하기 RuntimeException  (0) 2020.05.20
Connection Pool 설정하기  (0) 2020.05.14
Connection Pool 이론  (0) 2020.05.14
MVC Servlet - controller 작성하기 - 3  (0) 2020.05.13

댓글