Spring - intercept

김재령·2022년 2월 28일
0

SpringFramework

목록 보기
12/12

특정 주소에 접근할 때
로그인 상태를 먼저 확인하고
로그인 여부에 따라서 요청받은 페이지로 이동하거나

혹은

로그인 페이지로 이동하는 공통 작업

method(HttpSession session) {
    if(session.getAttribute("login") != null) {
	계속 진행
    }
    else {
	로그인 페이지로 강제 이동
    }
}

스프링 인터셉터 : 요청을 가로채서 사전에 필요하거나, 응답 만들기 전 혹은 모든 처리가 끝난 이후 공통 코드를 처리
request, response 에 접근할 수 있다

인터셉터 페이지 매핑

-servelt-context.xml-

<interceptors>	
		<interceptor>	
			<mapping path="/myPage/**" />					
			<beans:bean id="loginIntercepter" class="com.itbank.intercepter.LoginIntercepter" />
		</interceptor>
	</interceptors>
package com.itbank.intercepter;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.itbank.model.MemberDTO;

public class LoginIntercepter extends HandlerInterceptorAdapter {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		HttpSession session = request.getSession();
		MemberDTO login = (MemberDTO) session.getAttribute("login");
		System.out.println(login != null ? "로그인 사용자 : " + login.getUser_email() : "로그인 없음" );
		
		if(login != null) {
			return true;
		}
		response.sendRedirect(request.getContextPath() + "/member/login");
		return false;	// 반환값에 따라서 기존 요청에 대한 처리를 그대로 진행하거나	true
						// 혹은 진행을 중단하고 새로운 응답을 만들어서 보낸다		false
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
	
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
	
	}
}
profile
with me

0개의 댓글