전자정부프레임워크(eGovFramework)를 처음 설치하고 Eclipse에서 프로젝트를 만들면, 처음부터 엄청 복잡한 폴더와 파일 구조가 덩그러니 나타납니다.
저도 처음에는 상당히 당황했습니다.
“대체 뭐가 Controller고, 뭐가 Service고, 왜 XML이 이렇게 많아?”
“Maven? pom.xml? 이건 왜 또 있는 거지…?”
정말 많이 헤맸습니다. 온라인 강의를 들으면서 그냥 따라하기에만 급급했죠.
정작 어떤 역할을 하는지 자세히 이해도 하지 못한 채 말입니다.
그렇게 강의를 따라가다보니 페이지가 만들어지고 결과물이 나오자 내가 잘한다는 착각에 빠지게 되었습니다.
결국 그 결과는 실무에서 어마어마한 실수로 이어졌고 이를 수습하느라 진땀을 흘렸습니다. 혼나지는 않았냐구요?
상사분들이 혼내기 보다는 좋게 말해주려는 그 모습에서 스스로 엄청난 부끄러움, 민망함과 송구스러움을 느꼈습니다.
이 때를 계기로 저는 퇴근 후와 주말에 다시 강의를 복습하면서 모르는 단어나 이해가 부족한 듯 하면 곧바로 Google 검색 등을 활용해 정보를 확인하고 그래도 이해가 완벽히 되지 않으면 AI를 적극적으로 활용하며 스스로의 부족함을 채웠습니다.(입문자의 AI활용법이 궁금하다면?)
이번 입문 2편을 필두로 진행될 입문 시리즈에서는 저와 같은 처지에 계실 분들. 이해는 잘 되지 않지만 무지성으로 소스코드를 따라 치기만 했던 분들 모두에게 도움이 될 것이라 자신합니다. 앞으로 게시판 만들기 프로젝트를 진행하면서 여러분도 개념을 다시 쌓고 기초를 제대로 다질 수 있었으면 합니다.
이번 편에서는 전자정부 프로젝트를 시작할 때 반드시 알아야 하는 핵심 구조와 설명 없이 그냥 지나가면 끝없이 막히는 Maven 개념을 입문자 눈높이에 맞춰 정말 쉽게 정리했습니다. 조금이나마 여러분의 성장에 도움이 되길 바랍니다.

전자정부프레임워크 프로젝트 구조부터 이해하자
전자정부 프로젝트의 폴더 구조는 “3-레이어 아키텍처”를 기반으로 만들어집니다.
여기서 말하는 “3-레이어 아키텍처” 라는 말은 하나의 프로그램을 3개의 역할로 나눠서 만든 구조를 말합니다.
프로그램을 3개의 층(layer)로 나누는데, 이름은 다음과 같습니다.
- Presentation Layer (프레젠테이션) = 화면, JSP, View
- Business Layer (비즈니스 로직) = Service
- Data Access Layer (데이터 접근) = DAO/Mapper, DB연동
무엇인지 약간 감이 오시겠지만 이해되기 쉽게 실생활에 비유를 해보겠습니다.
1) 화면 Layer (Presentation Layer) : 손님과 처음 만나는 프론트.
- 메뉴판
- 주문받는 직원
- 손님에게 음식 전달
→ 웹에서는 JSP/HTML 화면이 이 역할을 합니다.
손님(사용자)이 “치즈버거 주세요” 라고 말하면 그걸 주문 받아서 내부 직원(Service)에게 전달하는 것과 같습니다.
2) 서비스 Layer (Business Logic Layer) : 실제 음식을 만드는 주방.
- 치즈버거 레시피대로 조리
- 주문 순서 관리
- 여러 재료 조합 처리
- 내부 로직 수행
→ 웹에서는 Service 클래스가 이 역할을 맡습니다.
예를 들어
- 아이디/비번 맞는지 검사
- 게시판 목록 가져오기 위해 DAO 호출
- 로그인 성공/실패 로직 처리
이런 “실제 업무”는 모두 Service에서 처리합니다.
3) 데이터 Layer (Data Access Layer) : 창고·재고 관리 직원처럼 DB와 직접 소통하는 파트.
- 재고(데이터)가 얼마나 있는지 확인
- 창고(MyBatis Mapper)에서 물건(DB 데이터) 꺼내오기
- 재고 업데이트(INSERT/UPDATE)
→ 웹에서는 DAO, Mapper, MyBatis가 이 역할을 담당합니다.
Service는 메뉴 조리,DAO/Mapper는 재료 관리라고 이해하시면 됩니다.
3개가 어떻게 연결되나요? (단 한 줄 정리)
화면(JSP) → Controller → Service → DAO/Mapper → DB
DB 결과 → DAO → Service → Controller → JSP 화면 출력
이 흐름이 이해되면 전자정부 게시판이든 로그인 기능이든 전부 동일한 구조로 되어 있다는 사실을 인지하시게 됩니다.
웹개발에 있어 굉장히 중요하고 기본적인 내용이니 꼭 숙지하셔야 합니다.
아래는 전자정부 프로젝트가 생성되는 기본 구조예요. 전자정부프레임워크를 실행시키시고 따라해주시면 됩니다.

welcome 창의 x를 눌러 닫아줍니다.


폴더별 역할을 가장 쉽게 이해하는 방법
전자정부프레임워크의 프로젝트를 하나의 “회사” 라고 생각하면 구조를 단번에 이해할 수 있습니다.
1) Controller (문지기 / 안내센터)
위치예시 :src/main/java/.../web/
요청을 제일 먼저 받는 곳
- URL로 들어온 요청을 받습니다.
- 어떤 Service를 호출할지 결정합니다.
- 결과를 JSP에게 전달합니다.
👉 고객이 회사에 오면 맨 처음 만나는 안내데스크입니다. 앞서 설명드린 화면 Layer 에 해당합니다.
2) Service (회사 핵심 직원 / 업무 처리 담당)
위치예시:src/main/java/.../service/
실제 로직을 수행하는 핵심 파트
- 비즈니스 로직 처리
- DAO 호출
- 데이터 가공
👉 회사에서 실제로 일을 처리하는 직원 부서. 앞서 설명드린 서비스 Layer 에 해당합니다.
3) DAO (DB 전달 담당자)
위치예시:src/main/java/.../service/impl/ 내부 또는 별도 dao 패키지
DB에게 말걸기 직전, Mapper로 쿼리를 보냄
- MyBatis XML에 작성된 쿼리를 실행합니다.
- SELECT / INSERT / UPDATE 등의 DB 쿼리를 요청합니다.
👉 DB에게 “이 데이터 줄래요?” 하고 요청하는 전달 직원. 앞서 설명드린 데이터 Layer에 해당합니다.
4) Mapper (DB에게 전하는 쿼리 편지)
위치예시:src/main/resources/egovframework/sqlmap/
실제 SQL이 적혀있는 XML 파일
<select>,<insert>,<update>문 작성- MyBatis가 이를 읽고 실행함
👉 DAO가 DB에 보내는 정확한 요청서(편지). 마찬가지로 앞서 설명드린 데이터 Layer에 해당합니다.
5) JSP (고객에게 보여주는 화면)
위치예시:src/main/webapp/WEB-INF/jsp/
최종 사용자와 마주하는 화면
- HTML + JSTL 사용
- 로그인폼, 게시판 목록, 글쓰기 화면 등
👉 고객에게 보여주는 실제 매장 디스플레이. 다시 돌아온 화면 Layer 입니다.
6) properties / config (프로젝트 설정 파일들)
- DB 연결 정보
- 로그 레벨
- 파일 경로
- 환경 설정 값
프레임워크의 내부 시스템입니다. 예를 들자면 수도관, 가스관 등 우리가 집 내부에 보이지 않는 부분이지만 기능을 쓰기 위해 매설되어 있는 부분이라고 이해하시면 됩니다. 입문자는 이 부분을 잘 몰라서 설정이 꼬이면 화면이 안 뜨는 경우가 매우 많습니다.(제가 그랬습니다)
7) pom.xml (전자정부 프로젝트의 핵심 파일)
Maven 설정 파일이며, 프로젝트 라이브러리·버전·빌드 규칙이 모두 들어 있습니다.
지금부터 Maven을 아주 쉽게 설명하겠습니다.
Maven, 입문자 기준으로 가장 쉽게 설명하기
전자정부프레임워크는 Spring, MyBatis, log4j 등 수십 개의 라이브러리를 기본적으로 사용합니다.
그렇지만
입문자가 직접 모든 라이브러리를 설치하고 버전 맞추는 건 사실상 불가능합니다.
그래서 등장한 것이 Maven입니다.
Maven이란?
“프로젝트에 필요한 라이브러리를 자동으로 설치해주는 관리자.”
여러분들이 진행할 프로젝트에 맞는 라이브러리를 자동으로 설치해주는 관리자라고 생각하시면 됩니다. 우리가 대출을 받을 때에도 대출 심사를 거치고 관련 서류를 준비하듯 프로젝트를 진행함에 있어 필요한 조건을 준비해야 합니다. 처음 전세대출 받을 때가 생각나는군요. 대출 관련 서류는 우리가 직접 준비하지만 이때 어떤 서류가 필요한지 상담사에게 조언을 듣습니다. 대신 준비는 스스로 해야하죠. 하지만 개발에서는 Maven 이 대신 해줍니다. 그것도 자동으로 말이죠.
Maven이 필요한 이유 (입문자 기준)
- 전자정부는 라이브러리가 굉장히 많습니다.
- 버전이 조금만 달라도 오류가 납니다.
- dependency를 자동으로 관리해줍니다. (dependency : 필요로 하는 외부 기능을 자동으로 가져오는 설정)
- 빌드/컴파일까지 자동 처리 가능
pom.xml 은 무엇일까?
pom.xml은 전자정부 프로젝트의 핵심 설계도입니다.
“이 프로젝트는 어떤 라이브러리를 사용할 거야” 라는 목록이 들어있습니다.
pom.xml 예시
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.22.RELEASE</version>
</dependency>
이 한 줄로 Spring MVC 기능이 자동 설치됩니다.
초보자가 반드시 알아야 할 Maven 3요소
1) dependency
설치할 라이브러리 목록
2) build(Cntl + Shift + B)
프로젝트를 실행할 수 있게 묶어주는 과정
3) repository
라이브러리를 다운로드하는 창고 (중앙 저장소 + 로컬 저장소)
전자정부 프로젝트 생성 후 “반드시 해둬야 하는 초기 설정”
전자정부를 실무에서 처음 사용하거나 아예 처음 맞딱드린다면 가장 많이 틀리거나 헷갈리는 부분이기 때문에 이것만 잘 이해해도 프로젝트 진행이 훨씬 수월합니다. 또한 처음 시작 시 설정해 두면 그 뒤에는 큰 문제가 없기 때문에 첫 단추를 잘 끼우셔야 합니다.
(1) JDK 버전 통일
- Eclipse
- Tomcat
- 프로젝트 빌드 패스
→ 세 가지가 모두 같은 버전이어야 오류가 없습니다.
(2) Tomcat 설정 (톰캣 설치 링크 Apatch Tomcat)
전자정부 3.10 → Tomcat 8.5.x 권장(예시일 뿐입니다. 검색해보고 맞는 버전의 Tomcat을 설치하세요!)
톰캣 서버 추가 후
Add and Remove → 프로젝트 추가 필수
(3) pom.xml 라이브러리 버전 충돌 체크
전자정부 템플릿은 Spring 4.x 기반이므로 Spring 5 버전 등을 실수로 추가하면 오류가 계속 납니다.
(4) DB 연결 properties 등록
jdbc.properties 파일을 반드시 프로젝트에 설정해야 합니다.
jdbc.url=jdbc:mysql://localhost:3306/egov
jdbc.username=root
jdbc.password=1234
(5) 로그 설정(log4j)
개발 중 문제점을 찾을 때 필수입니다. 이 부분은 다음 편 로그인 기능에서 바로 사용합니다.
(6) web.xml 기본 확인
- DispatcherServlet
- 문자 인코딩
- ViewResolver (이 부분이 꼬이면 화면이 안 뜹니다.)
전자정부 전체 흐름도 (입문자 필수)
전자정부 기반 Spring MVC의 전체 구조는 아래와 같습니다.
요청 → Controller → Service → DAO → Mapper → DB → JSP → 응답
이 구조를 이해하면 앞으로 게시판, 로그인, 댓글 등 어떤 기능도 쉽게 만들 수 있습니다.
마무리
이번 입문 2편에서는 전자정부 프로젝트를 만들기 전 입문자가 반드시 알아야 하는 핵심 구조와 프로젝트 개발 환경 설정을 알아봤습니다.
다음 편 예고
다음 편에서는 게시판 만들기 프로젝트의 첫번째 기능인 로그인 기능을 직접 만들면서 방금 배운 Controller → Service → Mapper → DB 흐름을 실제로 구현해보겠습니다. 설정하는 부분도 모두 이미지로 올리고 소스코드도 정리해서 따라하시고 분석하실 수 있게 구성하겠습니다.
👉 전자정부프레임워크에서 사용될 개발환경 Eclipse가 궁금하다면?
[개발환경 입문] Eclipse란? – Java 개발의 기본 환경과 JDK 설정 완벽 가이드
👉 프로그래밍 언어인 Java 에 대해 궁금하다면?
[Java] Java에 대해 알아보자.(Java 시리즈 1편)
[Java] 비전공자 / 노 베이스 입문자를 위한 자바 기본 문법 총정리 (Java 시리즈 2편)
👉 전자정부프레임워크 공식 홈페이지 전자정부프레임워크 포털
👉 개발환경 가이드 개발환경 가이드