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;
}
}
':: IT > 포토폴리오' 카테고리의 다른 글
[JSP] 부트스트랩을 이용한 수강신청 게시판 만들기(로그인 및 로그아웃 구현하기/평가등록하기/신고하기) (0) | 2020.06.18 |
---|---|
[JSP] 부트스트랩을 이용한 수강신청 게시판 만들기(회원가입 및 이메일 인증 구현하기) (0) | 2020.06.17 |
[JSP] 부트스트랩을 이용한 수강신청 게시판 만들기(로그인, 회원가입 폼 만들기) (0) | 2020.06.13 |
[JSP] 부트스트랩을 이용한 수강신청 게시판 만들기(index.jsp 폼 만들기) (0) | 2020.06.07 |
[JSP] 부트스트랩을 이용한 JSP게시판 만들기(게시판) (0) | 2020.06.06 |