ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전자정부프레임워크 뼛속까지 알아보자#3
    자바웹프로그래밍/전자정부프레임워크 2020. 4. 2. 15:42
    728x90
    반응형

    *도움이 되셨다면 광고 한번 클릭 부탁드립니다! 제게 큰 힘이됩니다!

     

    이제부터는 올인원 패키지에 있는 게시판들을 하나씩 뜯어보면서 코드를 분석하고 그때그떄 마다 모르는 부분들을 구글링하여 찾아본후 내용을 기록하고 나의 생각또한 적어볼것이다.

     

    처음 egov에 접속하면 아래와 같은 로그인 화면이 나온다.

     

    https://www.egovframe.go.kr/

     

    eGovFrame Portal 온라인 지원 포탈

    묻고 답하기 더보기 자주하는 질문 더보기 공지사항 더보기

    www.egovframe.go.kr

    표준프레임워크 포털에 들어가서 개발 가이드 -> 공통컴포넌트 -> 표준프레임워크 공통컴포넌트 3.8 가이드 -> 공통컴포넌트별 가이드로 접속하면 여러 큰 카테고리가 나오고 일반로그인을 클릭하면 여러가지 설명이나온다.

    이런식으로 현재 정부프레임워크에 기능들과 각각에 컨트롤러,비즈니스 인터페이스,비즈니스 구현클래스등에 대한 정보들이 나열되어 있고 게시판 수정을 진행해가면서 참조하며 진행할것이다.

     

    일단 보안 로그인등에 대한 이야기는 나중에 하고 게시판을 수정하기위해서 로그인을 자동으로 인증시키기 위해

     

    Globals.Auth 를 dummy로 바꾼후 진행한다.

     

    dummy를 입력하고 /egov 에 접속하면 다음과 같이 자동 로그인이된다.

     

     

    자 이제는 큰 카테고리에 협업이라고 쓰여있는 게시판관리를 가보자

     

    여러가지 기본 기능들이 보인다. 이제 이기능들에 여러가지 기능들을 추가해서 이쁘게 꾸며보자 

     

    일단 정부프레임워크 공통컴포넌트에서 이 게시판에 컨트롤러 ,서비스 등등을 한번 알아보자

     

    게시판 관리에 들어가보면 아래와 같은 내용이 보이고  저 경로를 따라서 EgovBBSMasterController를 열어보자

     

    컨트롤러에 들어가니 코드내용이 쭈욱나온다.. 딱봐도 엄청길구나 ,,

     

    이제부터 시작이다. 일단 @controller부터 보자 이게 무엇인가하니

     

    정부프레임워크는 스프링기반으로 만들어졌고 @controller는 스프링에서 사용하는 어노테이션이다.

     

    컨트롤러는 사용자의 요청(*.do)이 진입하는 지점이며 요청에 따라 어떤 처리를 결정해주는것이다. 여기서 조심해야할건

     

    컨트롤러는 결정만해주는거고 실질적인 처리는 서비스(Layered Architecture)에서 한다 그리고 로직이 완성되면 사용자에게 처리된 데이터를 포함하는 jsp를 보여준다. 

     

     

     

     

    컨트롤러는 정부프레임워크에 egov-com-servlet.xml을 통해서 자동으로 빈으로 등록해준다  위 그림에서 나오는

     

    <context:component-scan base-package="egovframework">는 egovframework패키지에있는 것들을 스캔하라는 의미이고 안에 있는 <context:include-filter type="anootation" expression='org.springframework.stereotype.Controller"/>

    는 말그대로 컨트롤러 어노테이션이 있으면 등록해라라는 말이다

    아래에 나오는 exclude는 제외하라는것이며 service ,repository는 다른 context-common.xml 에서 인클루드 하고있다.

     

     

     

    컨트롤러 설명은 일단 여기까지하고 두번째 어노테이션인

     

    @Resource 는 어플리케이션에서 필요로하는 자원을 자동 연결할 때 사용된다. 프로퍼티 및 설정메서드(Setter,Getter)등에 적용시키며 스프링 설정파일에 등록되어있는 빈 객체의 name속성을 통하여 자동으로 주입된다.

     

    다시말하자면 name ="EgovBBSMasterService" 라고 등록된 빈을 찾아오는것이고 .

     

    @service라고 등록한 저녀석을 가져와서 egovBBSMasterService변수에 넣는것이다. 대부분 스프링은 이런식으로

     

    beans를 하나를 만들어서 다같이 공유!? 하는 느낌인거같다.  그리고 이 service는 스캔을 통해서 서비스를 찾고 

     

    이미 빈즈로 만들어 놓은것이다.

     

    다음은 @Autowired 인데 이것은 @resource랑 비슷하다고 알고 그냥 넘어가면 될거같다 지금은

     

    그다음은 @RequestMapping이다 이 어노테이션은 현재 적혀있는 url이 들어오면 아래에 있는 메소드를 실행하는것이다

     

     

     

     

    egov-com-interceptor.xml 을 보면 mvc:mapping path="/**/*.do"/ 라고 되어있는데 이게 바로 .do라는 url이 오면 인터셉터하라는것이고 여기서 말하는 인터셉터는

     

    HttpRequest 와 컨트롤러가 응답하는 HttpResponse를 가로채는 행위이다.

     

     

    인터셉터는 Filter와 역할이 비슷한대 Filter 와 인터셉터는 엄연히 다른존대이다.

     

    위 Spring Lifecycle처럼 filter는 Dispatcherservelt 실행되기전 인터셉터는 Dispatcherservlet이 실행된후 실행된다.

     

    인터셉터는 대부분 로그인 처리를 할떄 사용하며 글을 써가면서 알아가 보기로해보자

    728x90
    반응형
Designed by Tistory.