ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Interceptor 구현 및 xml수정하기
    기록./2015 2013. 6. 12. 00:26
    반응형


    * 세션을 유무에 따른 인터셉터 구현

    로그인을 안한 사용자가 로그인 후 보일 페이지 또는 임의 주소를 입력하여 접근 하는 것을 막는 것.


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



    반응형

    댓글

Designed by Tistory.