본문 바로가기

Web

Java 웹 프로젝트 전체 구성 정리(공부용)

반응형

✅ Java 웹 프로젝트 전체 구성 정리 (Spring + eGovFrame 기준)


🧩 1. 계층별 구성도 (전체 흐름)

[Browser]
   ↓
[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. 흐름 예시 (회원가입)

  1. 사용자가 /user/register.do 요청
  2. UserController.register() 호출
  3. UserService.registerUser(vo) 호출
  4. UserServiceImpl 내부에서 UserDAO.insertUser(vo) 호출
  5. UserMapper.xml의 SQL 실행
  6. DB에 INSERT 수행
  7. 결과를 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               ← 웹 설정

✅ 한 줄 요약

Spring + eGovFrame 프로젝트는 “계층 구조를 명확히 나누어 각자 책임에 충실하게” 설계됩니다.

각 구성요소는 협업, 유지보수, 테스트를 용이하게 만들기 위한 역할 분담 구조입니다.

반응형