반응형
✅ Java 웹 프로젝트 전체 구성 정리 (Spring + eGovFrame 기준)
🧩 1. 계층별 구성도 (전체 흐름)
[Browser]
↓
[JSP View (jsp, css, js)]
↓
[Controller (web)]
↓
[Service / ServiceImpl]
↓
[DAO / Mapper]
↓
[SQL (Mapper.xml)] ⇄ [DB (Oracle 등)]
↓
[JSP View (jsp, css, js)]
↓
[Controller (web)]
↓
[Service / ServiceImpl]
↓
[DAO / Mapper]
↓
[SQL (Mapper.xml)] ⇄ [DB (Oracle 등)]
📦 2. 구성요소별 역할과 예시
계층파일/디렉터리예시설명
📁 VO | UserVO.java | String id, name | 데이터를 담는 그릇 (Model 객체) |
🧭 Controller | UserController.java | @RequestMapping("/login.do") | 사용자 요청 처리 → Service 호출 → View 반환 |
⚙ Service (Interface) | UserService.java | void login(UserVO vo) | 비즈니스 로직 정의 |
⚙ ServiceImpl | UserServiceImpl.java | @Override login(...) | 실제 비즈니스 처리 로직 구현 |
🗃 DAO (Interface) | UserDAO.java | selectUserById(...) | DB와 연결할 메서드 정의 |
🗃 Mapper (XML) | UserMapper.xml | <select id="selectUserById"> | SQL 쿼리 정의 |
🧾 JSP (View) | /WEB-INF/jsp/user/login.jsp | <form>, ${result} | 사용자에게 보여줄 화면 |
🎨 CSS | /css/style.css | .btn { color: red; } | 화면 디자인 담당 |
✨ JS | /js/common.js | onClick, ajax(...) | 동작 제어, 비동기 처리 등 |
⚙️ 3. 설정 파일 구조
파일위치역할
web.xml | WEB-INF/ | DispatcherServlet 등록, 인코딩 필터 등 |
dispatcher-servlet.xml | egovframework/spring/ | Controller, ViewResolver, Component Scan |
applicationContext.xml | egovframework/spring/ | Bean 등록, 트랜잭션, AOP, DB 연결 설정 등 |
context.xml | META-INF/ | 톰캣 JNDI 설정 (DB 커넥션 풀 등) |
log4j.xml or logback.xml | resources/ | 로그 설정 (콘솔, 파일 로그 등) |
UserMapper.xml | resources/sqlmap/mapper/ | MyBatis SQL 정의 |
🔄 4. 흐름 예시 (회원가입)
- 사용자가 /user/register.do 요청
- UserController.register() 호출
- UserService.registerUser(vo) 호출
- UserServiceImpl 내부에서 UserDAO.insertUser(vo) 호출
- UserMapper.xml의 SQL 실행
- DB에 INSERT 수행
- 결과를 JSP에 전달하여 "가입완료" 화면 출력
🛠️ 5. 기타 자주 쓰는 부가 요소
요소설명
Filter | 웹 요청에 공통적으로 적용 (인코딩, 로그인 확인 등) |
Interceptor | Spring MVC 전/후처리 (예: 인증, 로깅) |
@Valid, Validator | 입력값 유효성 검사 |
TransactionManager | DB 트랜잭션 처리 (rollback 등) |
MultipartResolver | 파일 업로드 지원 |
i18n (국제화) | 다국어 메시지 처리 |
Model / ModelMap | Controller → View로 데이터 전달 |
RedirectAttributes | 리다이렉트 시 파라미터 전달 |
📁 6. 실제 디렉터리 구조 예시
src/
├── egovframework/
│ ├── com/ ← 공통 VO, 유틸
│ ├── web/ ← Controller
│ ├── user/
│ │ ├── service/ ← 인터페이스
│ │ ├── service/impl/ ← 비즈니스 로직 구현
│ │ └── mapper/ ← DAO 인터페이스
resources/
├── sqlmap/
│ └── mapper/ ← Mapper XML (SQL 정의)
├── egovframework/
│ └── spring/ ← context/servlet 설정
│ └── message/ ← 다국어 메시지
webapp/
├── css/
├── js/
├── images/
├── WEB-INF/
│ ├── jsp/ ← View (JSP)
│ ├── lib/ ← 라이브러리
│ └── web.xml ← 웹 설정
├── egovframework/
│ ├── com/ ← 공통 VO, 유틸
│ ├── web/ ← Controller
│ ├── user/
│ │ ├── service/ ← 인터페이스
│ │ ├── service/impl/ ← 비즈니스 로직 구현
│ │ └── mapper/ ← DAO 인터페이스
resources/
├── sqlmap/
│ └── mapper/ ← Mapper XML (SQL 정의)
├── egovframework/
│ └── spring/ ← context/servlet 설정
│ └── message/ ← 다국어 메시지
webapp/
├── css/
├── js/
├── images/
├── WEB-INF/
│ ├── jsp/ ← View (JSP)
│ ├── lib/ ← 라이브러리
│ └── web.xml ← 웹 설정
✅ 한 줄 요약
Spring + eGovFrame 프로젝트는 “계층 구조를 명확히 나누어 각자 책임에 충실하게” 설계됩니다.
각 구성요소는 협업, 유지보수, 테스트를 용이하게 만들기 위한 역할 분담 구조입니다.
반응형
'Web' 카테고리의 다른 글
전자정부프레임워크 회원가입 기능 개발 순서도 + 코드 예제 (1) | 2025.06.11 |
---|---|
JSP 설명 및 요약 (0) | 2025.06.11 |