인프런 강의 학습/MVC 프레임워크_나프1탄

인프런 MVC 프레임워크는 내손에 21일차 : MVC01_8 회원가입 구현

현호s 2021. 6. 6. 10:17
반응형

# MVC01_8 회원가입 구현

## MemberDAO 구현

  • 회원가입을 위해 쿼리 전송 구현
package kr.bit.model;

import java.sql.*;

// JDBC -> myBatis, JPA
public class MemberDAO {
	private Connection conn;
	private PreparedStatement ps;
	private ResultSet rs;
	
	// 데이터베이스 연결 객체 생성
	public void getConnect() {
		// 데이터베이스 접속 URL -> 데이터베이스 벤더마다 다름.
		String URL = "jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&serverTimeZone=UTC";
		String user = "root";
		String password = "1234";
		
		// MySQL Driver Loading
		try {
			// 동적 로딩. (실행 시점에서 객체를 생성하는 방법)
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(URL, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	// 회원 저장 동작
	public int memberInsert(MemberVO vo) {
		String SQL = "inser into member(id, pass, name, age, email, phone) values(?, ?, ?, ?, ?, ?)";	// ?는 파라미터를 의미.
		getConnect();
		
		// SQL 문장을 전송하는 객체 생성
		
		int cnt = -1;
		
		try {
			ps = conn.prepareStatement(SQL);	// 미리 컴파일 시킴(속도 향상)
			ps.setString(1, vo.getId());
			ps.setString(2, vo.getPass());
			ps.setString(3, vo.getName());
			ps.setInt(4, vo.getAge());
			ps.setString(5, vo.getEmail());
			ps.setString(6, vo.getPhone());
			
			// 성공 시 1, 실패 시 0
			cnt = ps.executeUpdate();					// 전송(실행)
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return cnt;
	}
	
	
}

## MemberInsertController 구현

  • Model 과 연동하는 부분 구현 작업.
package kr.bit.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;

@WebServlet("/memberInsert.do")
public class MemberInsertController extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response) 
							throws ServletException, IOException {
		
		request.setCharacterEncoding("utf-8");
		// 1. 파라미터 수집(VO)
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		String name = request.getParameter("name");
		int age = Integer.parseInt(request.getParameter("age"));
		String email = request.getParameter("email");
		String phone = request.getParameter("phone");
		
		// 파라미터 수집(VO)
		// MemberVO vo = new MemberVO(id, pass, name, age, email, phone);
		MemberVO vo = new MemberVO();		
		vo.setId(id);
		vo.setPass(pass);
		vo.setName(name);
		vo.setAge(age);
		vo.setEmail(email);
		vo.setPhone(phone);
		
		//System.out.println("vo : " + vo);	// vo.toString() 이 생략되어있는 것.
		// Model과 연동하는 부분
		MemberDAO dao = new MemberDAO();
		int cnt = dao.memberInsert(vo);
		PrintWriter out = response.getWriter();
		// 가입 성공
		if ( cnt > 0 ) {
			out.println("insert success");
		// 가입 실패 -> 예외 객체를 만들어서 WAS에게 던지자.
		} else {
			throw new ServletException("not insert");
			
		}
	}
}
  • 구현작업 완료 후 MySQL 실행을 위해 cmd에 아래와 같이 입력하여 MySQL 실행
C:\Users\Hyeonho>cd..

C:\Users>cd..

C:\>cd eGovFrame-3.9.0

C:\eGovFrame-3.9.0>cd bin

C:\eGovFrame-3.9.0\bin>cd mysql-5.6.21

C:\eGovFrame-3.9.0\bin\mysql-5.6.21>startup.bat

## 회원가입 테스트

  • 톰캣 실행하여 회원가입 기능이 정상 작동하는지 확인.
  • 발생 할 수 있는 에러 : 쿼리 문법 에러 등.

  • insert 후 확인은 window > show view 에서 SQL Results 오픈하여 기존에 만든 member.sql에 있는 SELECT * FROM 쿼리 실행하여 확인.
  • 이때 아래와 같은 에러 발생 시 이클립스를 닫고, C:\eGovFrame-3.9.0\workspace.edu\.metadata\.plugins\org.eclipse.datatools.sqltools.result 경로의 result 파일을 삭제 후 이클립스 재 실행

  • SELECT 문 실행 시 아래와 같이 정상적으로 insert 된 member 목록을 확인할 수 있다.

반응형