개발자의 끄적끄적

[java] 전자정부 프레임워크 Interceptor[인터셉터] 설정 하기 [펌] 본문

개발/java & jsp

[java] 전자정부 프레임워크 Interceptor[인터셉터] 설정 하기 [펌]

효벨 2020. 4. 9. 08:03
728x90
반응형

[java] 전자정부 프레임워크 Interceptor[인터셉터] 설정 하기 [펌]

 

 

웹개발을 하다보면 많은 페이지마다 반복되어야 하는 것들이 있다

 

예를들어 페이지를 이동할때마다 권한 검사를 한다던가 로그를 기록해야 한다던가 하는 것들

 

또한 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>

Colored by Color Scripter

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> 

Colored by Color Scripter

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;

 }

 

 

}

 

 

Colored by Color Scripter

cs

치는 개발자의 야매 가이드]



출처: https://yamea-guide.tistory.com/entry/전자정부-프레임워크-Interceptor인터셉터-설정-하기 [기타치는 개발자의 야매 가이드]

반응형
Comments