** πλ―Έλ ν¬νΈν΄λ¦¬μ€ νλ‘μ νΈ **
μ§κΈκΉμ§ λ°°μ΄ λͺ¨λ κΈ°μ μ νμ©νμ¬
μ€μ μμ€μ μΉ μλΉμ€λ₯Ό 1κ° μμ±ν΄λ³΄λ λ¨κ³
β μμ± ν κΈ°μ λ©΄μ μμ βμ κ° μ§μ λ§λ νλ‘μ νΈμ λλ€β μ€λͺ κ°λ₯
π§© λͺ©μ°¨
- νλ‘μ νΈ λͺ©ν λ° κ΅¬ν λ²μ
- νλ‘μ νΈ μ 체 ꡬ쑰
- νμ΄μ§ νλ¦λ
- κΈ°μ κ΅¬μ± μμ
- μμ κΈ°λ₯ μ€κ³ (νμκ°μ + κ²μν + λκΈ)
- 보μ & μ ν¨μ± μ€κ³
- λ©΄μ λ°νμ© μ€λͺ ν¬λ§·
- λ§λ¬΄λ¦¬ μμ½ + Notion μμ± ν
β 1. νλ‘μ νΈ λͺ©ν λ° κ΅¬ν λ²μ
νλͺ© | μ€λͺ |
---|---|
λͺ©ν | JSP κΈ°λ°μ νμμ κ²μν λλ 리뷰 μμ€ν μ 1κ° μμ± |
κ΅¬μ± | νμκ°μ /λ‘κ·ΈμΈ + κ²μκΈ CRUD + λκΈ κΈ°λ₯ + νμΌ μ λ‘λ + κ΄λ¦¬μ νμ΄μ§ |
νΉμ§ | Servlet + DAO + DTO + MariaDB μμ μ°λ |
κ²°κ³Ό | ν¬νΈν΄λ¦¬μ€μ λ£μ μ μλ μ€μ νλ‘μ νΈ |
β 2. νλ‘μ νΈ μ 체 ꡬ쑰
π ν¨ν€μ§ λ° νμΌ κ΅¬μ‘°
π controller/
ββ LoginServlet.java
ββ RegisterServlet.java
ββ BoardListServlet.java
ββ BoardWriteServlet.java
ββ CommentInsertServlet.java
ββ LogoutServlet.java
π dao/
ββ UserDAO.java
ββ BoardDAO.java
π dto/
ββ UserDTO.java
ββ BoardDTO.java
π util/
ββ DB.java
π view/
ββ login.jsp
ββ register.jsp
ββ board_list.jsp
ββ board_write.jsp
ββ comment_area.jsp
β 3. νμ΄μ§ νλ¦λ
[νμκ°μ
β λ‘κ·ΈμΈ β κ²μκΈ λͺ©λ‘ β κ²μκΈ μμ± β λκΈ λ±λ‘ β λ‘κ·Έμμ]
1. register.jsp β RegisterServlet β DB
2. login.jsp β LoginServlet β μΈμ
μ μ₯
3. list.jsp β BoardListServlet β DB λͺ©λ‘ μ‘°ν
4. write.jsp β BoardWriteServlet β κ²μκΈ λ±λ‘
5. comment.jsp β Ajax β CommentInsertServlet β DB μ μ₯
6. logout.jsp β μΈμ
μ΄κΈ°ν
β 4. κΈ°μ κ΅¬μ± μμ
κ΅¬λΆ | κΈ°μ μ€ν |
---|---|
λ°±μλ | Java Servlet, DAO, DTO, JDBC |
DB | MariaDB |
νλ‘ νΈ | HTML, CSS, JavaScript (Ajax ν¬ν¨) |
ꡬ쑰 μ€κ³ | MVC2 ν¨ν΄ |
보μ | PreparedStatement, μΈμ κ³ μ λ°©μ§, SHA-256 μνΈν |
μ ν¨μ± κ²μ¬ | JavaScript + μλ² μ ν¨μ± λ³ν |
β 5. μμ κΈ°λ₯ μ€κ³
β 1) νμκ°μ + λ‘κ·ΈμΈ
νμ΄μ§ | μ²λ¦¬ λ°©μ |
---|---|
register.jsp β RegisterServlet β UserDAO.insert() |
Β |
λΉλ°λ²νΈλ SHA-256μΌλ‘ μνΈν ν DB μ μ₯ | Β |
λ‘κ·ΈμΈ μ LoginServlet β μΈμ
μ loginId μ μ₯ |
Β |
β 2) κ²μν (CRUD)
κΈ°λ₯ | μ€λͺ |
---|---|
λͺ©λ‘ μ‘°ν | /board/list β BoardListServlet β DB μ‘°ν ν list.jsp μΆλ ₯ |
κΈ μμ± | /board/write β BoardWriteServlet β DB μ μ₯ ν 리λλ μ
|
κΈ μμ /μμ | /board/edit , /board/delete β URL νλΌλ―Έν° + DAO μ²λ¦¬ |
β 3) λκΈ (Ajax)
fetch("CommentInsertServlet", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: "content=λκΈμ
λλ€&boardId=3"
});
β CommentInsertServlet
β DB μ μ₯ β commentList.jsp
μ λμ μΆλ ₯
β 6. 보μ & μ ν¨μ± μ€κ³
보μ νλͺ© | μ μ© λ°©λ² |
---|---|
SQL Injection λ°©μ§ | λͺ¨λ SQLμ PreparedStatement μ¬μ© |
λΉλ°λ²νΈ μνΈν | SHA-256 μ μ© (EncryptUtil.java ) |
μΈμ κ³ μ λ°©μ§ | λ‘κ·ΈμΈ μ invalidate() ν getSession(true) |
μ λ ₯ μ ν¨μ± κ²μ¬ | JS + Servlet λ¨μμ λͺ¨λ μ²΄ν¬ |
κ΄λ¦¬μ νμ΄μ§ μ κ·Ό μ ν | if (!session.getAttribute("loginId").equals("admin")) |
β 7. λ©΄μ λ°νμ© μ€λͺ ν¬λ§· π€
π§ βμ κ° λ§λ κ²μν ν¬νΈν΄λ¦¬μ€μμλβ¦β
- MVC2 ν¨ν΄ κ΅¬μ‘°λ‘ κ΅¬μ±νμκ³ ,
- Controllerλ Servlet, Modelμ DAO/DTO, Viewλ JSPλ‘ λλμμ΅λλ€.
- λ‘κ·ΈμΈ μ μΈμ
μ ν΅ν΄ μ¬μ©μ μνλ₯Ό μ μ§νλ©°,
- κ²μν κΈ°λ₯μ CRUD μ λΆ κ΅¬ννκ³ , λκΈμ Ajaxλ‘ λΉλκΈ° μ²λ¦¬νμ΅λλ€.
- 보μ μΈ‘λ©΄μμλ PreparedStatement, λΉλ°λ²νΈ μνΈν, μΈμ
κ³ μ λ°©μ§ λ±μ μ μ©νμ΅λλ€.
β 8. λ§λ¬΄λ¦¬ μμ½ π§
- β μ 체 κΈ°μ ν΅ν© μ€μ΅: JSP + Servlet + DAO/DTO + DB + Ajax + 보μκΉμ§
- π¦ ꡬ쑰 λΆλ¦¬: controller / dao / dto / view / utilλ‘ λΆλ¦¬
- π 보μ κ°ν: SQL Injection λ°©μ§, μνΈν, μΈμ 보νΈ
- π‘ λ©΄μ λλΉ μμ±: μ€μ λ§λ νλ‘μ νΈλ‘ μ€λͺ κ°λ₯νκ² μ€λΉ