mysql 접속

mysql.server start

mysql -uroot -p

create database LectureEvaluation;

use LectureEvaluation;

//회원가입 테이블
create table user(
userID varchar(20),
userPassword varchar(64),
userEmail varchar(50),
userEmailHash varchar(64), //이메일 확인(메일을 보내서 이 이메일이 확실히 한지 확인 될 수 있는지 확인한다.)
userEmailChecked boolean //이메일 인증을 완료했는지 확인하는 것
);

desc user; //필드확인

겹치지 않도록 PK설정
alter table user add primary key(userID);

//강의평가작성 테이블
create table evaluation(
evaluationID int primary key auto_increment,
userID varchar(20),
lectureName varchar(50),
professorName varchar(20),
lectureYear int,
semesterDivide varchar(20),
lectureDivide varchar(10),
evaluationTitle varchar(50),
evaluationContent varchar(2048),
titalScore varchar(5),
creditScore varchar(5),
comfortableScore varchar(5),
lectureScore varchar(5),
likeCount int
);

desc evaluation;

//추천 테이블
create table likey(
userID varchar(20),
evaluationID int,
userIP varchar(50)
);

commit;

DTO 구축

생성자 만들기

UserDTO.java 만들기

package user;

public class UserDTO {
	
	private String UserID;
	private String UserPassword;
	private String UserEmail;
	private String UserEmailHash;
	private boolean userEmailChecked;
	
	public  UserDTO() {
		//기본 생성자 (초기화 하는 함수)
	}
	
	public UserDTO(String userID, String userPassword, String userEmail, String userEmailHash,
			boolean userEmailChecked) {
		super();
		UserID = userID;
		UserPassword = userPassword;
		UserEmail = userEmail;
		UserEmailHash = userEmailHash;
		this.userEmailChecked = userEmailChecked;
	}
	
	public String getUserID() {
		return UserID;
	}
	public void setUserID(String userID) {
		UserID = userID;
	}
	public String getUserPassword() {
		return UserPassword;
	}
	public void setUserPassword(String userPassword) {
		UserPassword = userPassword;
	}
	public String getUserEmail() {
		return UserEmail;
	}
	public void setUserEmail(String userEmail) {
		UserEmail = userEmail;
	}
	public String getUserEmailHash() {
		return UserEmailHash;
	}
	public void setUserEmailHash(String userEmailHash) {
		UserEmailHash = userEmailHash;
	}
	public boolean isUserEmailChecked() {
		return userEmailChecked;
	}
	public void setUserEmailChecked(boolean userEmailChecked) {
		this.userEmailChecked = userEmailChecked;
	}

}

 

UserDAO.java

package user;

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


import util.DatabaseUtil;

public class UserDAO {
	
	//실질적으로 데이터베이스에 접근할 수 있도록 해준다.
	
	// 로그인을 시도하는 함수 
	   public int login(String userID, String userPassword) {
			String SQL = "SELECT userPassword FROM USER WHERE userID = ?";
					Connection conn = null;
					PreparedStatement pstmt = null;
					ResultSet rs = null;

					try {
						//연결하는 객체 
						conn = DatabaseUtil.getConnection();
						//conn객체를 가지고 와서 sql 문장을 실행 시켜줄 준비를 한다.
						pstmt = conn.prepareStatement(SQL);
						//받아온 ID 값을 ?에 넣어준다.
						pstmt.setString(1, userID); 
						//실행한 결과를 rs에 넣어준다.
						rs = pstmt.executeQuery(); // 결과를 조회 하는 것 꼭 rs와 같이 사용한다.
						//실행한 후 만약 값이 있다면, 
						if (rs.next()) { 
							//아이디가 있다면, 결과(비번)을 받아서 같다면, 
							if(rs.getString(1).equals(userPassword)) {
								return 1;// 로그인 성공.
							}
							else
								return 0;//비밀번호가 불일치 한다. 
						}
						return -1; //아이디가 없다..
					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						try {if(conn != null) conn.close();} catch (Exception e) { e.printStackTrace();}
						try {if(pstmt != null) pstmt.close();} catch (Exception e) { e.printStackTrace();}
						try {if(rs != null) rs.close();} catch (Exception e) { e.printStackTrace();}	
						}
					return -2; //데이터베이스 오류 
	   		}//login end

	// 회원가입을 시도하는 함수 
	   public int join(UserDTO user) {
				String SQL = "INSERT INTO USER VALUES(?, ?, ?, ?, false)";
					Connection conn = null;
					PreparedStatement pstmt = null;
					ResultSet rs = null;

					try {
						//연결하는 객체 
						conn = DatabaseUtil.getConnection();
						//conn객체를 가지고 와서 sql 문장을 실행 시켜줄 준비를 한다.
						pstmt = conn.prepareStatement(SQL);
						//받아온 ID 값을 ?에 넣어준다.
						pstmt.setString(1,  user.getUserID());
						pstmt.setString(2,  user.getUserPassword());
						pstmt.setString(3,  user.getUserEmail());
						pstmt.setString(4,  user.getUserEmailHash());
						return pstmt.executeUpdate(); //insert , 삭제는 이것을 사용해서 처리한다.실제로 영향을 받은 데이터 개수를 반환한다. 성공하면 1이상을 반환한다.
						// 0 이상의 숫자가 나오기 떄문에 성공
					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						try {if(conn != null) conn.close();} catch (Exception e) { e.printStackTrace();}
						try {if(pstmt != null) pstmt.close();} catch (Exception e) { e.printStackTrace();}
						try {if(rs != null) rs.close();} catch (Exception e) { e.printStackTrace();}	
						}
					return -1; //프라이머리키가 걸려있어서 -1을 반환한다.
	   		}//join end
	   
	   // 이메일을 검증하는 함수 
	   public boolean getUserEmailChecked(String userID) {
		   		//사용자의 아이디 값을 받아서 인증을 받았는지 확인한다.
				String SQL = "select userEmailChecked from user where userID = ?";
					Connection conn = null;
					PreparedStatement pstmt = null;
					ResultSet rs = null;

					try {
						//연결하는 객체 
						conn = DatabaseUtil.getConnection();
						//conn객체를 가지고 와서 sql 문장을 실행 시켜줄 준비를 한다.
						pstmt = conn.prepareStatement(SQL);
						//받아온 ID 값을 ?에 넣어준다.
						pstmt.setString(1, userID);
						//실행 결과 값을 rs	에 받아서 저장한다.
						rs = pstmt.executeQuery(); 
						//실행한 후 만약 값이 있다면, 
						if (rs.next()) { 
							//
							return rs.getBoolean(1); //userEmailChecked의 값을 반환하도록 만든다.
						}
						
					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						try {if(conn != null) conn.close();} catch (Exception e) { e.printStackTrace();}
						try {if(pstmt != null) pstmt.close();} catch (Exception e) { e.printStackTrace();}
						try {if(rs != null) rs.close();} catch (Exception e) { e.printStackTrace();}	
						}
					return false; //boolean이기 떄문에 true or false 값을 반환한다. 데이터베이스 오류 
	   		}//getUserEmailChecked end
	   
	   //회원의 이메일 자체를 반환해주는 함수 
	   public String getUserEmail(String userID) {
		 //사용자의 아이디 값을 받아서 인증을 받았는지 확인한다.
			String SQL = "select userEmail from user where userID = ?";
				Connection conn = null;
				PreparedStatement pstmt = null;
				ResultSet rs = null;

				try {
					//연결하는 객체 
					conn = DatabaseUtil.getConnection();
					//conn객체를 가지고 와서 sql 문장을 실행 시켜줄 준비를 한다.
					pstmt = conn.prepareStatement(SQL);
					//받아온 ID 값을 ?에 넣어준다.
					pstmt.setString(1, userID);
					//실행 결과 값을 rs	에 받아서 저장한다.
					rs = pstmt.executeQuery(); 
					//실행한 후 만약 값이 있다면, 
					if (rs.next()) { 
						//
						return rs.getString(1); //userEmailChecked의 값을 반환하도록 만든다.
					}
					
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					try {if(conn != null) conn.close();} catch (Exception e) { e.printStackTrace();}
					try {if(pstmt != null) pstmt.close();} catch (Exception e) { e.printStackTrace();}
					try {if(rs != null) rs.close();} catch (Exception e) { e.printStackTrace();}	
					}
				return null; //boolean이기 떄문에 true or false 값을 반환한다. 데이터베이스 오류 
		   
	   }
	   
	   
	// 이메일을 인증을 완료하는 함수 
	   public boolean setUserEmailChecked(String userID) {
		   		//특정한 아이디 값을 가지는 사용자로 하여금 이메일 인증을 해주는 것 
				String SQL = "update user set userEmailChecked = true where userID = ?";
					Connection conn = null;
					PreparedStatement pstmt = null;
					ResultSet rs = null;

					try {
						//연결하는 객체 
						conn = DatabaseUtil.getConnection();
						//conn객체를 가지고 와서 sql 문장을 실행 시켜줄 준비를 한다.
						pstmt = conn.prepareStatement(SQL);
						//받아온 ID 값을 ?에 넣어준다.
						pstmt.setString(1, userID);
						pstmt.executeUpdate();
						return true; //이미 인증이 된 상태라도 한번더 확인해준다.
					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						try {if(conn != null) conn.close();} catch (Exception e) { e.printStackTrace();}
						try {if(pstmt != null) pstmt.close();} catch (Exception e) { e.printStackTrace();}
						try {if(rs != null) rs.close();} catch (Exception e) { e.printStackTrace();}	
						}
					return false; //boolean이기 떄문에 true or false 값을 반환한다. 데이터베이스 오류 
	   		}//setUserEmailChecked end
}

 

DatabaseUtil.java

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class DatabaseUtil {
	
	public static Connection getConnection() {
		try {
			String dbURL ="jdbc:mysql://localhost:3306/LectureEvaluation?serverTimezone=UTC";
			String dbID = "root";
			String dbPassword = "1234";
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection(dbURL,dbID,dbPassword);
		}catch (Exception e) {
			e.printStackTrace();
		}
		return null;
		
	}
		
}

+ Recent posts