728x90
interceptor는 controller에 가기전에 가로채는 역할을 하고
'dispatcher-servlet.xml' 에서 설정한다
('bean-class'태그에 로그인관련 파일을 등록한다)
만들어준 로그인관련.Java file에 'HandlerInterceptor'를 implement하여
preHandle(//컨트롤러가 호출되기전에 실행)
postHandle(//컨트롤러가 실행된후 실행)
afterCompletion(//뷰에서 최종결과가 생성하는일을 포함한 모든일이 완료되었을때 실행)
가 Override 되도록 상속받는다
이곳에서 interceptor가 가로챈 request 를 적절히 처리할수있다
dispatcher-servlet.xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/admin/*" />
<mvc:exclude-mapping path="/admin/index.do" />
<mvc:exclude-mapping path="/admin/login.do" />
<bean class="testproject.interceptors.LoginAdapterInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
로그인관련.Java
public class LoginAdapterInterceptor implements HandlerInterceptor {
//메서드의 반환값이 true인 경우 Handler의 다음 체인이 실행, false인 경우 중단하고 남은 interceptor와 Controller가 실행되지 않는다
@Override
public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object arg2, Exception arg3) throws Exception {
//view 에서 최종결과가 생성하는일을 포함한 모든일이 완료되었을때 실행
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,Object arg2, ModelAndView arg3) throws Exception {
//Controller가 실행된후 실행
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
//Controller가 호출되기전에 실행
HttpSession session = request.getSession();
if(session.getAttribute("userId") != null) {
return true;
}
else {
response.sendRedirect("/admin/index.do");
return false;
}
}
}
728x90
'Back end > Java' 카테고리의 다른 글
자바 JAVA HttpURLConnection (0) | 2023.03.24 |
---|---|
[java] JSON 데이터 value 꺼내기 (0) | 2023.03.15 |
자바(Java) object를 int로 변환, object value 값 int형 변환 (0) | 2022.07.15 |