본문 바로가기

Programming/SERVER

DAY 120. MVC2 패턴 - 회원가입

회원가입

 

01. EnrollServlet.java

- com > kh > mvc > member > controller 밑에 생성

- URL Mappings : /member/enroll | doGet & doPost 생성

- get 요청 : url에 입력하는 doGet 요청으로 오면 jsp 페이지로 forward(URL이 바뀌지 않는다.)

- post 요청 : doPost 에는 넘어오는 데이터를 가지고 비즈니스 로직을 등록할 때 사용

 

 

02. enroll.jsp

- <form>태그의  action 속성에 url 등록한다. action="${ pageContext.request.contextPath }/member/enroll" method="post"

- 아이디 중복 검사는 AJAX로 구현

- 패스워드, 패스워드 확인 같은지 확인하는 로직 구현

 

03. EnrollServlet.java

- 데이터를 가져올 때, 하나의 행의 결과를 member 객체로 만들었었다.

- 가입할 때는, member 객체를 만들어서 데이터 베이스에 하나의 행(row)로 저장해보자.

- 사용자에게 받은 파라미터를 가지고 객체를 만든다.

- Member 객체를 생성한다.

- Member 객체에 값을 set한다.

member.setXXX(request.getParameter("YYY"));

- 그러나 이 서블릿에서도 실제 회원가입하는 비즈니스 로직은 구현하지 않는다.

- private MemberService service = new MemberService(); 객체를 만든다.

- service 객체에 save 메소드를 통해서 (member) 를 저장하거나, 업데이트를 한다.

- save() : DB에 INSERT, UPDATE 작업을 한다.

- DML인 UPDATE, INSERT, DELETE는 정수 값을 리턴한다. 

- WHY? DML 작업은 영향 받은 행의 갯수를 리턴하기 때문이다.

- 이 결과를 가지고 로직을 구현한다. 

if(result > 0 ) {
	// 회원가입이 완료 되었다는 뜻
    
} else {
	// 회원가입이 실패했다는 뜻
}

 

 

04. MemberService.java

- save() 메소드를 구현

public int save(Member member){
  int result = 0;
    
   result = dao.insertMember(member);
    
    return result;
}

 

 

05. MemberDao.java

- insertMember() 메소드 구현

public int insertMember(Connection connection, Member member) {
  int result = 0;

  PreparedStatement pstmt = null;

  String query = "INSERT 쿼리문";

  try {
    pstmt = connection.prepareStatement(query);
    pstmt.setString(1, member.getXXX());

    result = pstmt.executeUpdate();

    } catch (SQLException e) {
    e.printStackTrace();
    } finally {
    close(pstmt);
  }

  return result;
}