특정 주소에 접근할 때
로그인 상태를 먼저 확인하고
로그인 여부에 따라서 요청받은 페이지로 이동하거나
혹은
로그인 페이지로 이동하는 공통 작업
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 {
}
}