📒 개발기록/JSP 프로젝트

[JSP][도서쇼핑몰 프로젝트]#13.데이터베이스/테이블 생성 및 연동하기

초코붕붕 2023. 4. 8. 14:27
728x90

안녕하세요. 오늘은 데이터베이스를 만들어주고 jsp파일과 연결하여

로그인, 회원가입을 할 수 있도록 만들어주려고 합니다.

이렇게 데이터베이스를 연동하기 전에 MySQL설치

MySQL드라이버를 설치해 주어야 합니다.

그리고 이클립스 프로젝트에 MySQL커넥트 드라이버를 연결해주어야 하는데

이때 wepapp/WEB-INF/lib/폴더에 위치해야 합니다.

mysql-connector-java-8.0.29.jar
2.40MB

데이터베이스 생성 및 연동하는 부분은 동빈나채널의

JSP게시판 만들기 강좌를 이용하였습니다.

그럼 시작해 볼까요?


📋순서

1. 데이터베이스 생성

2. 테이블 생성 / 데이터 입력

3. 데이터베이스 연동


1. 데이터베이스 생성하기

'BOOKDB'라는 이름으로 데이터베이스를 하나 생성해 주었습니다. 

그리고 show databases; 입력해서 확인해 보면 잘 들어간 것을 확인할 수 있습니다. 


2. 테이블 생성 / 데이터 넣어주기

use를 사용하여 방금 만들어준 bookdb를 이용하도록 합니다.

USE bookdb;

user라는 테이블을 하나 생성해주고 회원가입 및 로그인에 필요한 정보들을 받을 수 있도록 입력해줍니다. 저는 회원정보를 아이디, 패스워드, 이름, 이메일만 사용해주고 아이디값을 primary key로 지정하였습니다.

create table user (
 userID varchar(20),
 userPass varchar(20),
 userName varchar(20),
 userEmail varchar(50),
 PRIMARY KEY (userID)
 );

이후, desc user; 을 입력해주면 다음과 같이 테이블이 만들어진것을 확인할 수 있습니다.

insert를 이용하여 다음과 같이 정보를 입력해주고 commit을 입력하여 완료하여 줍니다.

insert into user values('haha','12345','하하','haha@gmail.com');
commit;

3.데이터베이스 연동

이제 이클립스로 돌아와서 만들어준 데이터베이스를 사용할수 있도록 연동해주겠습니다.

먼저, user라는 이름으로 패키지를 만들어주고 그 안에 User클래스를 만들어 줍니다. 그리고 다음과 같이 변수를 작성합니다.

    private String userID;
    private String userPass;
    private String userName;
    private String userEmail;

JSP에서 사용해 주기 위해 [마우스 오른쪽 클릭] -> [Source] -> [Getter and Setter]을 눌러서 get과 set이 입력될수 있도록 만들어줍니다. 

 

UserDAO클래스를 만들어줍니다. DAO는 데이터베이스 접근 객체의 약자로 데이터베이스에서 회원정보를 불러오거나 저장할 수 있는 기능을 가진다고 합니다. DAO안에 다음과 같이 입력해 줍니다.

	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;

그리고 데이터베이스에 접속하기 위해 다음과 같이 입력해줍니다. 여기서 e.printStackTrace는 오류가 발생할경우 그 오류가 무엇인지 출력해주는 문장입니다. 

	//데이터베이스 접속
	public UserDAO() {
		try {
			String dbURL = "jdbc:mysql://localhost:3306/bookdb";
			String dbID = "root";
			String dbPassword = "1234";
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

로그인을 해주기 위해 필요한 userID, userPass를 가져오고 String SQL문을 이용하여 로그인 시 해당 사용자의 비밀번호를 가져올수있도록 작성합니다. 

	//로그인
	public int login(String userID, String userPass) {
		String SQL = "SELECT userPass FROM USER WHERE userID = ?";
		try {
			pstmt = conn.prepareStatement(SQL);
			pstmt.setString(1, userID);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				if (rs.getString(1).equals(userPass))
					return 1; // 로그인 성공
				else
					return 0; // 비밀번호 불일치
			}
			return -1; // 아이디 없음
		} catch (Exception e) {
			e.printStackTrace();
		}
		return -2; // 데이터베이스 오류
	}

이렇게 해주면 전체문장은 다음과 같습니다.

▶ UserDAO.java

더보기
package user;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserDAO {

	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;
	//데이터베이스 접속
	public UserDAO() {
		try {
			String dbURL = "jdbc:mysql://localhost:3306/bookdb";
			String dbID = "root";
			String dbPassword = "1234";
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//로그인
	public int login(String userID, String userPass) {
		String SQL = "SELECT userPass FROM USER WHERE userID = ?";
		try {
			pstmt = conn.prepareStatement(SQL);
			pstmt.setString(1, userID);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				if (rs.getString(1).equals(userPass))
					return 1; // 로그인 성공
				else
					return 0; // 비밀번호 불일치
			}
			return -1; // 아이디 없음
		} catch (Exception e) {
			e.printStackTrace();
		}
		return -2; // 데이터베이스 오류
	}
}

그리고 마지막으로 프로젝트에서 [오른쪽클릭] -> [Properties] -> [Java Build Path]에 들어가서 [Library]탭[addExternal JARs..]를 눌러 맨 앞에서 lib 폴더에 넣어주었던 Connector/J jar파일을 찾아서 클릭해준뒤 Apply를 해주면 완성입니다. 

반응형