[Spring Framework] Interceptor 구현 및 xml수정하기


* 세션을 유무에 따른 인터셉터 구현
로그인을 안한 사용자가 로그인 후 보일 페이지 또는 임의 주소를 입력하여 접근 하는 것을 막는 것.

1. Interceptor 클래스 파일 생성

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;


public class SessionInterceptor extends HandlerInterceptorAdapter{
 @Override
 public boolean preHandle(HttpServletRequest request,
   HttpServletResponse response, Object handler) throws Exception {
  
       if(request.getSession().getAttribute("LOGIN_USER") != null) //세션체크
              return true; 
       else{
              response.sendRedirect("loginForm.do"); //로그인이동
              return false;
          }
             //로그인 정보를 담은 세션을 가져와서 세션 정보가 있으면 패스~ 
             //그렇지 않으면 loginForm.do로 이동 하라는 거!
 }
 
        //이 밑에 부분도 설정 할 수 있음. 자세한 설명은 다시 검색 해보기! 
 @Override
 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
   ModelAndView modelAndView) throws Exception {
   super.postHandle(request, response, handler, modelAndView);
 }
 
 @Override
 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
   super.afterCompletion(request, response, handler, ex);
  }
}

2. xml파일 수정하기 applicationContext.xml

        



  
   
    
   
   
  
   
      loginController      
      
    


* 이런식으로 했었다. 음.. 대충 이해한건 main.do가 들어오면 sessionCheckInterceptor가 처리 하는? 이렇게 이해했다. (spring독학중임..)



! 헐 main.do 외의 다른 주소를 넣어도 404 에러가 떴다.
즉, 내가 타이핑한 /main.do 가 url 매핑시 문제가 생기는 것이었다. 뭐 경로 문제(프로젝트 명을 포함했었나.. 무튼 기억이 잘 안남.)

음.. context파일에 url매핑 설정을 안하면 default로 된다고 어디선가[?] 본 것 같다. 이 경우엔 context파일에 SimpleUrlHandler를 설정해놓아서, default가 아닌 SimpleUrlHandler에 맞춰 매핑 된 것 같다.

**해결방법
1) default handler를 선언하라고 한다. (여러 handler매핑이 있으니 찾아 보면서 해야겠다.) 
2) 그냥 다른 방법으로 시도 하였다. 



....(이부분은 개인 설정에 따라서.. 그니깐 생략)

   
 
  
           
                 
                     
                 
        



* url핸들러 매핑 추가 안하고, 저렇게만 했더니 해결 되었다. (이게 더 간편한 것 같다.) 


 -끝- 



주절주절 : ) 
spring설정하는 게 정말 어려운 것 같다. 사실.. spring을 짧은 교육 기간에 아주 쉬운 수준으로 접해본거라 spring에 대한 정확한 이해가 떨어지는 편이다.
이번 인터셉터 같은 경우에도, 검색하면서 다른 개발자들이 올려놓은 소스를 참고하여 해봤지만, 나는 안 됐다.. 
엉엉
설정 파일들이 서로 다르니 그런 것 같기도 하고.. 버전 문제인 것 같기도 하고..
정답이란건 없겠지만, 그래도 좀 더 나은 방법을 찾고 싶은 마음이 든다. 그래서 그런지 작은거 하나 해보는데도 시간이 많이 걸린다는 사실~! 

ps. 구글엔 천재들이 너무나 많다는 사실~! 외국 커뮤니티 사이트엔 내가 겪고 있는 문제의 해결방법이 간혹 있다는 사실~!


댓글

이 블로그의 인기 게시물

블로그 이전 작업 및 블로깅 할 목록 정리

[Spring Framework] Redirect +a 궁금증! ver_0.1

Phoenix 라이브러리 - ERROR 2008 (INT10): Unable to find cached index metadata 발생 시