1. MemberVO 클래스 작성
* VO(Value Object)
- 회원 정보를 저장할 공간
- 회원 정보를 하나로 묶어서 저장 = 가방 안에 다 때려 넣는다
- 자바 빈을 데이터베이스와 접목할 경우 VO라고 함
- DTO(Data Transfer Object) = VO = 자바 빈
- private 속성 / setter(저장) / getter(조회) 메서드로 구성
2. JoinServlet 파일의 doGet() 메서드 작성
- 로직의 시작과 끝을 담당하는 Servlet = Controller와 동일하다고 생각하자
- 주소창에 join.do 라는 입력이 들어오면, 해당 서블릿의 doGet() 메서드를 실행하라 -> 첫 번째 수행이 되는거지!
3. member/join.jsp 파일 작성
4. join.jsp 파일 확인 / member.js 파일 작성
5. MemberDAO 작성
1) DAO(Data Access Object)란?
- DB의 데이터에 접근하기 위한 객체
- 레코드의 조회, 추가, 수정, 삭제 역할
- DB 데이터를 VO 객체로 얻어오거나 VO 객체에 저장된 값을 DB에 추가
- DB와의 소통 담당. 따라서, DB 연결 관련 메서드가 존재함.
디비 연결 관련 메서드를 따로 만들어놓고 DAO의 또다른 메서드에서 필요로 할 때마다 불러쓸거임
- 어떠한 쿼리문을 실행하는 로직. 쿼리문을 통해 나온 결과를 저장해서 리턴하는 구조.
- 쿼리문의 결과값을 반환함. 쿼리문을 처리하는 과정들이 쭉~ 담긴거라고 생각해
2) DAO의 싱글톤 패턴
- 원래 JSP에서는 DB에 접근할 때마다 객체를 생성하여 사용하였다. 따라서, 이러한 부하를 해결하기 위해 싱글톤 패턴으로 설계
- 싱글톤 패턴이란?
인스턴스가 오로지 단 하나만 존재할 수 있도록 클래스를 설계하는 것
객체를 메모리에 단 한 번만 올려놓고 시스템 전반에 걸쳐서 특정한 자원을 공유할 때 사용
무분별한 객체 생성을 막아 메모리 낭비를 막아줌
// import 참고
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
3) 회원 가입 로직 구현
executeUpdate() 를 실행한 결과는
1) INSERT, DELETE, UPDATE된 행의 수
2) 아무 리턴이 없으면 0
따라서 지금 상황은 1이 나와서 서블릿에서 1을 사용하는검. 상단에 초기화해놓은 것은 신경쓰지말자.
6. JoinServlet 파일의 doPost() 메서드 작성
- 실행 로직의 마지막도 Servlet이 담당
* 전체적인 로직 실행 순서
1) 브라우저에서 어떠한 url 요청이 들어옴
2) 서블릿의 doGet() 메서드로 이동
3) 서블릿의 doGet() 메서드 실행
- get은 페이지 이동 역할. 해당 jsp 페이지로 이동
4) jsp 페이지에서 사용자의 입력 받기
5) 폼의 action에 의해 다시 서블릿의 doPost() 메서드로 보냄
- 폼은 보통 post로 보냄
6) 서블릿에서 doPost() 메서드 실행
- 일단, 폼에서 정보가 전달되면 그것들을 다 받아옴
- 그리고, 어떤 일을 하기 위해 = 메서드를 실행하기 위해 = 쿼리문을 실행한 결과를 얻기 위해
DAO 객체를 생성해서 DB 연결 및 쿼리문을 수행하고, DAO에서 보내주는 쿼리의 결과값만 들고옴
(예를 들어, insertMember, selectMember 이런 메서드들을 실행한 결과값 = 쿼리문의 결과값을 들고옴)
- 그리고, 그 들고온 값을 어떻게 처리할지 적어주자 (브라우저에 넘겨주거나, 세션에 저장하거나 등등)
- 마지막으로, 모든 수행을 마치면 어떤 페이지로 보내줄지 정해주자 (포워딩)
'JSP' 카테고리의 다른 글
MVC2 패턴이란? (0) | 2020.09.13 |
---|---|
DBCP - VO, DAO, Servlet을 이용한 회원수정 (0) | 2020.09.13 |
커넥션 풀 (DBCP) (0) | 2020.09.13 |
[JSP] JDBC - INSERT / PreparedStatement (0) | 2020.09.13 |
[JSP] JDBC - SELECT / Connection / Statement / ResultSet (0) | 2020.09.08 |