이 프로젝트는 회원 관리 시스템으로, CRUD(Create, Read, Update, Delete) 기능을 구현한 웹 애플리케이션입니다.
🔍 구조
📁 프로젝트 구조
├── 📄 JSP 파일들 (View - 화면)
│ ├── welcome.jsp (시작 페이지)
│ ├── nav.jsp (네비게이션 메뉴)
│ ├── createForm.jsp (회원 등록 폼)
│ ├── allview.jsp (전체 회원 목록)
│ └── updateForm.jsp (회원 수정 폼)
├── 📁 Controller (요청 처리)
│ ├── create_controller.java
│ ├── readAll_controller.java
│ ├── update_controller.java
│ └── delete_controller.java
├── 📁 DAO (데이터베이스 연결)
│ └── member_repository.java
└── 📁 DTO (데이터 객체)
└── member.java1️⃣ Create 기능부터 보기
흐름: View → Controller → Repository → Controller → View
- welcome.jsp 시작 → nav.jsp의 "Create" 링크 클릭
- create_controller.java의
doGet()실행 → createForm.jsp 보여줌 - 사용자가 아이디/패스워드 입력 후 "전송" 버튼 클릭
- create_controller.java의
doPost()실행 - member_repository.java의
save()메소드로 DB에 저장 - 저장 완료 후 allview.jsp로 리다이렉트
// create_controller.java의 핵심 흐름
doGet() → createForm.jsp 보여주기
doPost() → 데이터 받기 → repository.save() → read_all로 리다이렉트2️⃣ Read 기능
- nav.jsp의 "Read_All" 링크 클릭
- readAll_controller.java의
doGet()실행 - member_repository.java의
readall()메소드로 모든 회원 데이터 가져오기 - allview.jsp에서 테이블 형태로 회원 목록 출력
3️⃣ Update 기능
- allview.jsp에서 "수정" 링크 클릭
- update_controller.java의
doGet()실행 - member_repository.java의
readone()메소드로 특정 회원 정보 가져오기 - updateForm.jsp에서 수정 폼 보여주기 (기존 데이터 채워져 있음)
- 수정 후 "전송" 버튼 클릭
- update_controller.java의
doPost()실행 - member_repository.java의
update()메소드로 DB 업데이트
4️⃣ Delete 기능
- allview.jsp에서 "삭제" 링크 클릭
- delete_controller.java의
doGet()실행 - member_repository.java의
delmember()메소드로 DB에서 삭제 - allview.jsp로 리다이렉트
MVC 패턴
- Model (DTO + DAO): 데이터 관련 처리
member.java: 회원 정보를 담는 객체member_repository.java: 데이터베이스 작업
- View (JSP): 사용자에게 보여지는 화면
- Controller (Servlet): 요청을 받아서 처리하고 응답
데이터 흐름
사용자 입력 → Controller → Repository (DB 작업) → Controller → View (결과 출력)1️⃣ Welcome.jsp (시작점)
<%@ include file="nav.jsp" %>- 이 페이지는 네비게이션 바만 포함하는 메인 페이지예요
nav.jsp를 포함해서 Create, Read_All 메뉴를 보여줍니다
2️⃣ nav.jsp (네비게이션)
<li class="nav-item"><a class="nav-link" href="create">Create</a></li>
<li class="nav-item"><a class="nav-link" href="read_all">Read_All</a></li>- "Create" 링크를 클릭하면 →
createURL로 이동 - "Read_All" 링크를 클릭하면 →
read_allURL로 이동
🔄 CREATE 과정 따라가기 (View → Controller → Repository → Controller → View)
1단계: View (사용자가 Create 클릭)
사용자가 nav.jsp에서 "Create" 링크 클릭 → href="create" → 서버의 /create URL로 GET 요청
2단계: Controller (create_controller.java)
@WebServlet("/create") // "/create" URL 요청을 이 컨트롤러가 처리
public class create_controller extends HttpServlet {
@Override
protected void doGet(...) { // GET 요청 처리
// createForm.jsp 페이지로 이동시킴
RequestDispatcher ds = req.getRequestDispatcher("createForm.jsp");
ds.forward(req, resp);
}
}3단계: View (createForm.jsp)
<form action="create" method="post">
<p>아이디: <input type="text" name="id">
<p>패스워드: <input type="text" name="pw">
<p><input type="submit" value="전송">
</form>- 사용자에게 회원가입 폼을 보여줌
- 사용자가 아이디, 패스워드 입력하고 "전송" 버튼 클릭
action="create" method="post"→ 같은/createURL로 POST 요청
4단계: Controller (create_controller.java의 doPost)
@Override
protected void doPost(...) { // POST 요청 처리
// 1. 전처리: 폼에서 전달받은 데이터 추출
String id = req.getParameter("id");
String pw = req.getParameter("pw");
// 2. 데이터를 member 객체로 묶음
member mb = new member();
mb.setId(id);
mb.setPw(pw);
// 3. Repository에게 저장 요청
repository.save(mb);
// 4. 저장 후 전체 목록 페이지로 리다이렉트
resp.sendRedirect("read_all");
}5단계: Repository (member_repository.java의 save 메소드)
public void save(member mb) {
// 1. 데이터베이스 연결
Connection conn = DriverManager.getConnection(url,id,pw);
// 2. SQL 쿼리 준비
String sql = "insert into member values(?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
// 3. 쿼리에 값 설정
pstmt.setString(1, mb.getId()); // 첫 번째 ?에 아이디
pstmt.setString(2, mb.getPw()); // 두 번째 ?에 패스워드
// 4. 쿼리 실행 (실제로 DB에 저장)
pstmt.executeUpdate();
}6단계: Controller → View (최종)
resp.sendRedirect("read_all") → 저장 완료 후 전체 회원 목록 페이지로 이동
💡 핵심 개념 정리
- MVC 패턴:
- View(JSP): 사용자가 보는 화면
- Controller(Servlet): 요청 처리하는 중간다리
- Model(Repository): 데이터베이스 작업
- HTTP 메소드:
- GET: 페이지 보여달라는 요청 (폼 화면 보여주기)
- POST: 데이터 전송하는 요청 (폼 데이터 처리하기)
- 데이터 흐름:
사용자 입력 → Controller → Repository → Database ↓ 결과 페이지 ← Controller ← Repository ← Database
외워도 되는 기본 패턴:
CREATE 서블릿 기본 뼈대
@WebServlet("/create")
public class create_con extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("폼 요청");
RequestDispatcher ds = req.getRequestDispatcher("/폼파일.jsp");
ds.forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("데이터 처리 시작");
// 1. 파라미터 받기
String id = req.getParameter("id");
String pw = req.getParameter("pw");
// 2. DTO로 묶기
member mb = new member();
mb.setId(id);
mb.setPw(pw);
// 3. Repository로 저장
member_repo repository = member_repo.getInstance();
repository.save(mb);
// 4. 리다이렉트
resp.sendRedirect("어디로갈지");
}
}
📝 외워야 할 핵심 패턴들:
1. 서블릿 기본 구조
@WebServlet("/주소")
public class 클래스명 extends HttpServlet {
doGet() // 폼 보여주기
doPost() // 데이터 처리
}
2. 폼으로 이동 (doGet)
RequestDispatcher ds = req.getRequestDispatcher("/파일.jsp");
ds.forward(req, resp);
3. 데이터 받기 (doPost)
String 변수 = req.getParameter("name속성");
4. DTO 생성 패턴
클래스 객체 = new 클래스();
객체.set메소드(값);
5. Repository 사용 패턴
Repository클래스 repository = Repository클래스.getInstance();
repository.메소드(객체);
6. 리다이렉트
resp.sendRedirect("주소");'JSP' 카테고리의 다른 글
| Create 서블릿 만들기 (0) | 2025.06.05 |
|---|---|
| CRUD 프로젝트 (0) | 2025.06.05 |
| SQL DB 연결하기 (0) | 2025.06.04 |
| mysql 8.0.33 설치환경 구축 (0) | 2025.06.02 |
| 6월 2일 시험준비 (0) | 2025.06.02 |