인프런 강의 학습/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 목록을 확인할 수 있다.
반응형