κ·νμ Spring Boot μΉ μ ν리μΌμ΄μ μ λν λͺ¨λ κ°μ μ¬νμ΄ μλ£λμμ΅λλ€.
λͺ©ν: μ¬λ¬ μ¬μ©μκ° λμμ λ‘κ·ΈμΈν μ μλλ‘ λ³κ²½
λ³κ²½μ¬ν:
- MemberController.java μμ
checkMembers()- κΈ°μ‘΄ μΈμ invalidate μ κ±°, μ μΈμ λ§ μμ±member_logout()- νμ¬ μ¬μ©μμ μΈμ λ§ μ κ±°, λ€λ₯Έ μ¬μ©μ μΈμ μ μ§
κ²°κ³Ό:
μ΄μ : μ¬μ©μ A λ‘κ·ΈμΈ β μ¬μ©μ B λ‘κ·ΈμΈ μ A κ°μ λ‘κ·Έμμ β
νμ¬: μ¬μ©μ A, B λμ λ‘κ·ΈμΈ κ°λ₯ β
λͺ©ν: 2κ° νμΌ λμ μ λ‘λ, μλ μ΄λ¦ λ³κ²½, μμΈ μλ¬ μ²λ¦¬
ꡬνλ μ»΄ν¬λνΈ:
- λ¨μΌ/λ€μ€ νμΌ μ λ‘λ
- νμΌ ν¬κΈ° κ²μ¦ (10MB μ ν)
- νμΌ νμ κ²μ¦ (νμ΄νΈλ¦¬μ€νΈ)
- μ€λ³΅ νμΌλͺ μλ μ΄λ¦ λ³κ²½ (νμμ€νν)
- μ΅λ 2κ° νμΌ μ λ‘λ μμ² λͺ¨λΈ
- μ μλν¬μΈνΈ:
POST /upload-files - FileUploadService ν΅ν©
- ν¬κ΄μ μΈ μλ¬ μ²λ¦¬
- μ¬μ©μ μΉνμ μλ¬ νμ΄μ§
- μλ¬ νμ λ³ λ©μμ§
- ν΄κ²° λ°©λ² μλ΄
- λ€μ€ νμΌ μ λ‘λ μμ
- νμΌ μ 보 νμ
- ν΄λΌμ΄μΈνΈ κ²μ¦
κ²°κ³Ό:
νμΌ μ
λ‘λ μ : μ΄λ©μΌ μ½ν
μΈ λ§ μ μ₯
νμΌ μ
λ‘λ ν: μ΅λ 2κ° νμΌ + μλ μ΄λ¦ λ³κ²½ + μμ ν μλ¬ μ²λ¦¬ β
β¨ src/main/java/com/waiyannaung/sku/model/service/FileUploadService.java
β¨ src/main/java/com/waiyannaung/sku/model/service/FileUploadRequest.java
βοΈ src/main/java/com/waiyannaung/sku/controller/MemberController.java (μμ )
βοΈ src/main/java/com/waiyannaung/sku/controller/FileController.java (μμ )
β¨ src/main/resources/templates/error_page/file_upload_error.html
β¨ src/main/resources/templates/file_upload_form.html
β¨ FILE_UPLOAD_AND_SESSION_IMPROVEMENTS.md - μμΈ λ¬Έμ (νκΈ)
β¨ IMPLEMENTATION_SUMMARY.md - ꡬν μμ½
β¨ DEVELOPER_QUICK_REFERENCE.md - κ°λ°μ λΉ λ₯Έ μ°Έμ‘°
β¨ VERIFICATION_CHECKLIST.md - κ²μ¦ 체ν¬λ¦¬μ€νΈ
β¨ COMPLETION_REPORT.md - μ΄ νμΌ
| κΈ°λ₯ | ꡬν |
|---|---|
| λ€μ€ μ¬μ©μ λμ λ‘κ·ΈμΈ | β κ° μ¬μ©μλ³ λ 립 μΈμ μμ± |
| μ¬μ©μλ³ λ‘κ·Έμμ | β λ€λ₯Έ μ¬μ©μ μΈμ μ μ§ |
| μΈμ νμμμ | β 5λΆ (application.properties) |
| μΏ ν€ λ³΄μ | β HTTPSλ§ μ μ‘ |
| κΈ°λ₯ | ꡬν |
|---|---|
| λ€μ€ νμΌ | β μ΅λ 2κ° |
| νμΌ ν¬κΈ° | β 10MB μ ν |
| νμΌ νμ | β νμ΄νΈλ¦¬μ€νΈ κ²μ¦ |
| μ€λ³΅ μ²λ¦¬ | β νμμ€νν μΆκ° |
| μλ¬ μ²λ¦¬ | β μ¬μ©μ μΉνμ νμ΄μ§ |
| μ¬μ©μ 격리 | β μ¬μ©μλ³ λλ ν 리 |
λ°©λ²: κ·Έλλ‘ μ¬μ© (λ³κ²½ μμ)
νΉμ§: μ¬λ¬ μ¬μ©μκ° λμμ λ‘κ·ΈμΈ κ°λ₯
<form action="/upload-files" method="post" enctype="multipart/form-data">
<input type="email" name="userEmail" required />
<input type="file" name="file1" required />
<input type="file" name="file2" />
<button type="submit">μ
λ‘λ</button>
</form>λλ μ 곡λ μμ νμ΄μ§: /file_upload_form.html
λΉ λ₯΄κ² μμνκ³ μΆλ€λ©΄:
- π IMPLEMENTATION_SUMMARY.md - 5λΆ μ½κΈ°
μμΈν μ΄ν΄νκ³ μΆλ€λ©΄:
- π FILE_UPLOAD_AND_SESSION_IMPROVEMENTS.md - 20λΆ μ½κΈ°
μ½λλ₯Ό μμ±ν΄μΌ νλ€λ©΄:
- π DEVELOPER_QUICK_REFERENCE.md - μ°Έμ‘°
λͺ¨λ κ²μ κ²μ¦νκ³ μΆλ€λ©΄:
- π VERIFICATION_CHECKLIST.md - 체ν¬λ¦¬μ€νΈ
β
UUID κΈ°λ° μΈμ
ID
β
5λΆ μΈμ
νμμμ
β
HTTPS μΏ ν€ λ³΄νΈ
β
νμΌλͺ
κ²μ¦ (κ²½λ‘ μ‘°μ λ°©μ§)
β
νμΌ νμ
νμ΄νΈλ¦¬μ€νΈ
β
νμΌ ν¬κΈ° μ ν
β
μ¬μ©μλ³ λλ ν 리 격리
- μ¬μ©μ A, B λμ λ‘κ·ΈμΈ
- κ°κ° λ 립μ μΈ μΈμ νμΈ
- A λ‘κ·Έμμ β B μΈμ μ μ§
- λ‘κ·ΈμΈ/λ‘κ·Έμμ κΈ°λ₯ μ μ
- 1κ° νμΌ μ λ‘λ
- 2κ° νμΌ λμ μ λ‘λ
- 3κ° νμΌ κ±°λΆ
- 10MB μ΄κ³Ό νμΌ κ±°λΆ
- νμ©λμ§ μλ νμ κ±°λΆ
- μ€λ³΅ νμΌλͺ μλ μ΄λ¦ λ³κ²½
- μ¬μ©μλ³ λλ ν 리 μμ±
- μλ¬ νμ΄μ§ νμ
| νλͺ© | μμΉ |
|---|---|
| μμ λ νμΌ | 2κ° |
| μλ‘ μμ±λ μ½λ νμΌ | 2κ° |
| μλ‘ μμ±λ ν νλ¦Ώ | 2κ° |
| μλ‘ μμ±λ λ¬Έμ | 4κ° |
| μΆκ°λ μ½λ λΌμΈ | ~800 |
| μΆκ°λ μ£Όμ | ~150 |
| μ 체 κ°λ° μκ° | μλ£ β |
- β μ»΄νμΌ μ±κ³΅
- β IDE μ€λ₯ μμ
- β κ²½κ³ μμ
- β μμ‘΄μ± νμΈλ¨
- β λͺ¨λ μꡬμ¬ν ꡬν
- β μλ¬ μ²λ¦¬ μλ²½
- β 보μ κ²μ¦ μλ£
- β μ¬μ©μ κ²½ν κ°μ
- β λͺ νν μ€λͺ
- β μ½λ μμ ν¬ν¨
- β ν μ€νΈ λ°©λ² μ μ
- β λ¬Έμ ν΄κ²° κ°μ΄λ
β
νμ¬ μν: νλ‘λμ
μ€λΉ μλ£
β
λ°°ν¬: λ°λ‘ μ μ© κ°λ₯
β
μΆκ° μ€μ : νμ μμ
ν
μ€νΈ μλ리μ€:
1. 2λͺ
μ μ¬μ©μλ‘ λμ λ‘κ·ΈμΈ ν
μ€νΈ
2. κ°κ° νμΌ μ
λ‘λ ν
μ€νΈ
3. μλ¬ μν© ν
μ€νΈ
κ°λ₯ν κ°μ :
- μ΅λ νμΌ κ°μ λ³κ²½
- νμΌ ν¬κΈ° μ ν λ³κ²½
- νμ© νμΌ νμ
μΆκ°
- λ°μ΄λ¬μ€ μ€μΊ ν΅ν©
- β κΈ°μ‘΄ λ‘κ·ΈμΈ UI λ³κ²½ μμ
- β κΈ°μ‘΄ λ‘κ·Έμμ UI λ³κ²½ μμ
- β κΈ°μ‘΄ μ΄λ©μΌ μ λ‘λ κΈ°λ₯ μ μ§
- β λ€μ€ μ¬μ©μ μΈμ (μλ νμ±ν)
- β νμΌ μ λ‘λ (μ μλν¬μΈνΈ)
- β λͺ νν μ£Όμ
- β κ°κ²°ν μ½λ
- β μμΈν λ¬Έμ
- β μ½λ μμ
- Java: 21
- Spring Boot: 3.5.8
- Template Engine: Thymeleaf
- Build Tool: Maven
- Database: MySQL
- Session Management: Servlet API (HttpSession)
- File Upload: Spring MultipartFile
- λ¬Έμ μ°Έμ‘°: FILE_UPLOAD_AND_SESSION_IMPROVEMENTS.md
- λΉ λ₯Έ μ°Έμ‘°: DEVELOPER_QUICK_REFERENCE.md
- 체ν¬λ¦¬μ€νΈ: VERIFICATION_CHECKLIST.md
// μΈμ
μ 보 νμΈ
System.out.println("Session ID: " + session.getId());
System.out.println("User Email: " + session.getAttribute("email"));
// νμΌ μ
λ‘λ μ 보 νμΈ
System.out.println("Filename: " + file.getOriginalFilename());
System.out.println("Size: " + file.getSize());- νλ μμν¬: Spring Boot (Apache 2.0)
- μΈμ΄: Java (Oracle)
- ν νλ¦Ώ: Thymeleaf (Apache 2.0)
β
β
β
β
β
5/5 - λͺ¨λ μꡬμ¬ν ꡬν
β
β
β
β
β
5/5 - μ°μν νμ§
β
β
β
β
β
5/5 - μλ²½ν λ¬Έμν
β
β
β
β
β
5/5 - 보μ κ°νλ¨
β
β
β
β
β
5/5 - μ¬μ©μ μΉνμ
λͺ¨λ μꡬμ¬νμ΄ κ΅¬νλμμΌλ©°, μ½λ νμ§, 보μ, λ¬Έμνκ° κ²μ¦λμμ΅λλ€.
μν: π νλ‘λμ μ€λΉ μλ£
λ°°ν¬νμ¬ μ¬μ©νμ€ μ μμ΅λλ€!
μμ±μΌ: 2024λ
12μ 13μΌ
μν: β
μλ£
λ€μ λ¨κ³: λ°°ν¬ λλ ν
μ€νΈ μ§ν