일반적인 Dynamic Web Project(동적 웹 프로젝트) 구조
project-root/
│── src/
│ ├── main/
│ │ ├── java/ # Java 소스 코드 (Servlet, Service, DAO 등)
│ │ ├── resources/ # 설정 파일 (DB 설정, 로그 설정 등)
│ │ ├── webapp/ # 웹 리소스 (JSP, HTML, CSS, JS)
│ │ │ ├── assets/ # 정적 리소스 (CSS, JS, 이미지)
│ │ │ │ ├── css/ # CSS 파일
│ │ │ │ ├── js/ # JavaScript 파일
│ │ │ │ ├── img/ # 이미지 파일
│ │ │ ├── WEB-INF/
│ │ │ │ ├── lib/ # 외부 라이브러리(JAR 파일)
│ │ │ │ ├── views/ # JSP 파일 저장 (404error.jsp, main.jsp 등)
│ │ │ │ ├── web.xml # 서블릿 및 URL 매핑 설정
│ │ │ ├── include/ # 공통 레이아웃 (header.jsp, footer.jsp)
│ │ │ ├── index.jsp # 메인 페이지
│── build/ # 빌드된 파일 (자동 생성)
│── target/ # 최종 배포용 파일 (자동 생성, WAR 등)
│── pom.xml # Maven 프로젝트 설정 (Maven 사용 시)
│── Readme.md # 프로젝트 설명
│── .gitignore # Git에서 제외할 파일 설정
✅ 폴더 설명
1️⃣ src/main/java/ (Java 소스 코드)
- Servlet, Service, DAO, DTO 등 Java 클래스 저장
- 예제 패키지 구조:
src/main/java/com/example/controller
src/main/java/com/example/service
src/main/java/com/example/dao
src/main/java/com/example/model
2️⃣ src/main/resources/ (설정 파일 저장)
- DB 설정, 로그 설정 등
- 예제 파일:
application.properties # Spring Boot 사용 시
log4j.xml # 로그 설정
dbconfig.properties # DB 연결 정보
3️⃣ src/main/webapp/ (웹 리소스 - JSP, CSS, JS, 이미지)
- 웹에서 사용하는 정적/동적 리소스 저장
- 구조:
src/main/webapp/assets/css/ # CSS 파일
src/main/webapp/assets/js/ # JS 파일
src/main/webapp/assets/img/ # 이미지 파일
src/main/webapp/include/ # 공통 레이아웃 (header.jsp, footer.jsp)
src/main/webapp/index.jsp # 메인 페이지
4️⃣ src/main/webapp/WEB-INF/ (보안이 필요한 파일 저장 공간)
- JSP 프로젝트의 핵심 폴더 (클라이언트가 직접 접근 불가능)
- 구조:
src/main/webapp/WEB-INF/views/ # JSP 파일 저장 (404error.jsp 등)
src/main/webapp/WEB-INF/lib/ # 외부 JAR 라이브러리 저장
src/main/webapp/WEB-INF/web.xml # 웹 애플리케이션 설정 파일
5️⃣ build/, target/ (빌드 및 배포 파일 저장)
- 빌드된 파일이 자동 저장됨
- Maven 프로젝트라면 target/ 폴더에 WAR 파일 생성됨
6️⃣ pom.xml (Maven 사용 시 라이브러리 관리)
- Maven 프로젝트의 경우 의존성 추가 가능
- 예제:
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
7️⃣ .gitignore (Git 사용 시 불필요한 파일 제외)
- Git에서 빌드된 파일 제외하기 위한 설정
- 예제:
/build
/target
*.log
*.war
jsp로 했던 susuma 프로젝트 구조가 이상해보여서 리팩토링 하려다가 포스팅!
다시봐도 jsp는 헷갈린다. 그래도 다음에 한다면 잘 할 듯

'개발인생 > Backend' 카테고리의 다른 글
| [ORM] JPA 성능 최적화: N+1 문제 해결하는 3가지 방법 (0) | 2025.02.22 |
|---|---|
| [ORM] JPQL vs QueryDSL: 무엇이 더 나을까? (2) | 2025.02.21 |
| [JSP] Tomcat은 JSP와 Servlet 실행에 왜 필요할까? (1) | 2025.02.17 |
| [JSP] vs Servlet (0) | 2025.02.17 |
| [JSP] vs HTML (0) | 2025.02.17 |