본문 바로가기
JAVA

Spring Java interceptor 설정 사용자세션처리

by 쑝스토리 2018. 9. 14.
반응형

스프링 자바 인터셉터 설정에 대해 알아보자


스프링에서 세션체크 및 로그인 전후 처리를 위해 자주 사용 되는 핸들러 인터셉터 DispatcherServlet이 컨트롤러를 호출하기전과 후에 대한 response(응답) 와 request(요청)을 제어 할 수 있는 필터입니다. 쉽게 설명하면, 클라이언트 즉 사용자가 서블릿 요청을 하면 Controller 로 가기전에 그 요청을 가로채는 역할을 합니다. 


3가지 메소드의 사용

HandlerInterceptor 는 3가지의 메소드로 구성되어 있으며, 사용자에게 필요한 시기에 따라 메소드를 선택하여 사용할수 있습니다. 

preHandle : 제일 많이 쓰이며, Controller 가 수행되기전에 수행 됩니다.

postHandle : Controller가 호출 되어 수행되고, View(jsp) 호출되기전에 수행 됩니다. 

afterCompletion : Controller 및 View(jsp) 까지 모두 호출 된 후에 수행 됩니다.


사용법은 매우 간단합니다. 서블릿을 제어하는 XML 파일에 추가 하시면 됩니다. 저는 DispatcherServlet.xml 이구요.

이름은 사용자들 마다 차이가 있겠네요. 


XML 설정법

<!-- WebLogInterceptor -->
<mvc:interceptors>
	<mvc:interceptor>
		<mvc:mapping path="/**/*" /> <!-- 모든 URL 요청시 모두수행 -->
		<mvc:mapping path="/record/*" /> <!-- record 하위 요청시 모두수행 -->
		<mvc:exclude-mapping path="/Join.do"/> <!-- 이 URL 제외시킴 -->
		<bean class="com.interceptor.WebLogInterceptor" />
	</mvc:interceptor>
</mvc:interceptors>	    


Interceptor.java 설정법

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class WebLogInterceptor implements
		HandlerInterceptor {
	static Logger logger = Logger.getLogger(WebLogInterceptor.class);


	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
	         // Controller 및 View(jsp) 까지 모두 호출 된 후에 수행 됩니다.
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		// Controller가 호출 되어 수행되고, View(jsp) 호출되기전에 수행 됩니다.
	}

	@Override
	public boolean preHandle(HttpServletRequest req, HttpServletResponse res,
			Object handler) throws Exception {

		try {
		   //제일 많이 쓰이며, Controller 가 수행되기전에 수행 됩니다.

		} catch (Exception e) {
			e.printStackTrace();
		}
		return true;
	}

}

이렇게 Spring Interceptor 에 대해 알아보았습니다. 설정법이 매우 간단하죠? 실제로 업무하면서도 많이 쓰이니, 알아두시면 좋을거 같네요. 저는 로그 기록이나 세션이 끊겼을 경우, 페이지 접근권한을 제어하는데 이용하구 있습니다. 모르시는거 있으면 댓글 언제든지 환영입니다. 저도 같이 공부하고 좋은거 같아요.

반응형