개발인생/Backend

[JSP] JSP 프로젝트 구조

forri 2025. 2. 17. 17:45
일반적인 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는 헷갈린다. 그래도 다음에 한다면 잘 할 듯

첫 jsp 프로젝트인 susuma...추억이군