웹개발을 하다보면 많은 페이지마다 반복되어야 하는 것들이 있다
예를들어 페이지를 이동할때마다 권한 검사를 한다던가 로그를 기록해야 한다던가 하는 것들
또한 URL을 요청해 컨트롤러가 구동되기 전 혹은 구동된 후에 실행시키고 싶은 것들도 있다
그런 인터셉터 기능을 설정하는 방법을 알아 보자
1. dispatcher-servlet.xml 설정
1 2 3 4 5 6 7 | <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> <property name="interceptors"> <list> <ref bean="localeChangeInterceptor" /> </list> </property> </bean> | cs |
이렇게 생겨먹은 부분이 있는데 이 List 사이에
<ref bean="localeChangeInterceptor" /> 얘는 건들이지 말고 그 밑에
<ref bean="id값" />을 넣어 준다
그리고 아래와 같은 코드를 추가 시켜 준다
1 2 3 4 5 6 7 8 | <bean id="위에 추가한 id값" class="인터셉터 기능을 수행할 패키지경로.클래스명"> <!-- 인증 체크가 필요 없는 URL 리스트 --> <property name="urls"> <list> 제외시킬 url 목록 </list> </property> </bean> | cs |
다음은 실행시킬 java 클래스를 만든다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | package 패키지 경로; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; /** * @패키지명 : 블로그용 * @파일명 : PlatformInterceptor.java * @작성일 : 2016. 5. 23. * @작성자 : "In Chee su" * @설명 : 인터셉트 */ public class 클래스명 extends HandlerInterceptorAdapter { // 인증 체크가 필요 없는 URL 리스트 List<String> urls; public void setUrls(List urls) { this.urls = urls; } /* (non-Javadoc) * @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object) */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 기능을 수행하고 Controller를 실행 하려면 // return true; // 특정 체크에서 일치하지 않는다면 // response.sendRedirect("특정 에러 페이지로 보낸다"); // return false; // 인증 체크가 필요 없는 URL 체크 for(int i=0; i < urls.size(); i++){ if (request.getRequestURI().matches(urls.get(i))) { System.out.println("== 인증 체크가 필요 없는 URL ============================"); System.out.println("== URL : "+ urls.get(i) +" ============================"); System.out.println("== return true ============================"); System.out.println("== 인터셉터 종료 ============================"); return true; } // 첫페이지가 로그인 페이지일 경우 // 첫페이지 jsession때문에 request.getRequestURI().indexOf("/login/login.do") != -1 사용 if(request.getRequestURI().indexOf(urls.get(i)) != -1){ return true; } } // 세션이 있는지 체크 // 세션에 로그인한 정보가 있는지 체크 return true; } } | cs |
이렇게 만들면 된다.
'Yame Programmer > 전자정부프레임워크' 카테고리의 다른 글
Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener (1) | 2016.06.02 |
---|---|
전자정부 프레임워크 스프링 프로퍼티[properties] 추가 하기 (1) | 2016.06.02 |
서버[tomcat] 실행시 클래스 실행 (0) | 2016.05.24 |
톰캣[tomcat] context간 세션 공유 (0) | 2016.05.24 |
DWGViewX no mapping uri오류 해결 (0) | 2016.01.08 |