참고
- 데이터를 모델링 할때는 이미 설계된
데이터 베이스를 바탕으로 진행이된다
1. DTO(Data Transfer Object)
: 데이터베이스에 설계된 것을 바탕으로 DTO에 데이터 모델링을 한다.
변수를 정의하고 모든 변수를 함수형태로 접근할 수 있도록 만들어 준다.
Source - Generate Getters and Setters - select all - ok
생성자 생성
Source - Generate Constructor using field -
빈 생성자 생성
public UserDTO
2. DAO(Data Access Object)
: 실질적으로 데이터베이스에 접근하는 것.
이전에 데이터베이스와 연동해놓은 util - DatabaseUtil.java 파일을 추가한다.
5가지 함수를 정의 - 회원 데이터 모델링
1. login 결과값: 정수 (Int) / login
2. Join 결과값: 정수 (Int) / Join
3. Email 결과값: 문자열 (String) / getUserEamil
4. Email인증 결과값: true or false (boolean 값) / getUserEmailCheckd
5. Email인증을 수행해주는 함수 / setUserEmailChecked
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
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 = ?"; //사용자로부터 입력받은 ID가 가지고 Password를 불러와서 처리하겠다는 것.
Connection conn = null;
PreparedStatement pstmt = null; //특정한 SQL 문장을 수행 하도록 하는 class
ResultSet rs = null; // 특정한 SQL 문장을 수행한 이후에 나온 결과값에 대해 처리하고자 할 때 사용하는 class
try {
conn = DatabaseUtil.getConnection(); //Connection 객체 초기화 / DatabaseUtil.java 파일에서 리턴값에 반환된 객체들을 getConnection을 통해 연결받고 conn 객체에 담는다
pstmt = conn.prepareStatement(SQL); //conn 객체에서 prepareStatement를 실행하도록 준비
pstmt.setString(1, userID); //위에 ?에 값을 넣어주는 것.
rs = pstmt.executeQuery(); //실제로 SQL 문장을 데이터베이스에서 실행시킨 후 그 값을 rs에 담아준다.
if(rs.getString(1).equals(userPassword)) { //실제 데이터와 사용자가 입력한 데이터가 일치하는 경우 1을 반환
return 1; // 로그인 성공
}
else {
return 0; // 비밀번호 틀림
}
}
return -1; // 아이디가 일치하지 않으면 '아이디 없음'
} catch (Exception e) {
e.printStackTrace();
} finally { // 위 4 객체는 한번 사용하면 자원을 해체해주는 게 중요함
}
return -2; //데이터 베이스 오류
}
public int join(UserDTO user) {
String SQL = "INSERT INTO USER VALUES (?, ?, ?, ?, false)";
Connection conn = null;
PreparedStatement pstmt = null; //특정한 SQL 문장을 수행 하도록 하는 class
ResultSet rs = null; // 특정한 SQL 문장을 수행한 이후에 나온 결과값에 대해 처리하고자 할 때 사용하는 class
try {
conn = DatabaseUtil.getConnection(); //Connection 객체 초기화 / DatabaseUtil.java 파일에서 리턴값에 반환된 객체들을 getConnection을 통해 연결받고 conn 객체에 담는다
pstmt = conn.prepareStatement(SQL); //conn 객체에서 prepareStatement를 실행하도록 준비
pstmt.setString(1, user.getUserID());
pstmt.setString(2, user.getUserPassword());
pstmt.setString(3, user.getUserEmail());
pstmt.setString(4, user.getUserEmailHash());//위에 ?에 값을 넣어주는 것.
return pstmt.executeUpdate(); //executeQuery는 데이터를 검색할 때 사용 insert 나 delete 같은 update는 executeUpdate사용
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return -1; //회원가입 실패
}
public String getUserEmail(String userID) {
String SQL = "SELECT userEmail FROM USER WHERE userID = ?";
Connection conn = null;
PreparedStatement pstmt = null; //특정한 SQL 문장을 수행 하도록 하는 class
ResultSet rs = null; // 특정한 SQL 문장을 수행한 이후에 나온 결과값에 대해 처리하고자 할 때 사용하는 class
try {
conn = DatabaseUtil.getConnection(); //Connection 객체 초기화 / DatabaseUtil.java 파일에서 리턴값에 반환된 객체들을 getConnection을 통해 연결받고 conn 객체에 담는다
pstmt = conn.prepareStatement(SQL); //conn 객체에서 prepareStatement를 실행하도록 준비
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
if(rs.next()) {
return rs.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return null; // 데이터베이스 오류
}
public boolean getUserEmailChecked(String userID) { //사용자 이메일 검증, 검증 없이 사용하지 못하게 할것이기 때문에 이 함수가 필요
String SQL = "SELECT userEmailChecked FROM USER WHERE userID = ?";
Connection conn = null;
PreparedStatement pstmt = null; //특정한 SQL 문장을 수행 하도록 하는 class
ResultSet rs = null; // 특정한 SQL 문장을 수행한 이후에 나온 결과값에 대해 처리하고자 할 때 사용하는 class
try {
conn = DatabaseUtil.getConnection(); //Connection 객체 초기화 / DatabaseUtil.java 파일에서 리턴값에 반환된 객체들을 getConnection을 통해 연결받고 conn 객체에 담는다
pstmt = conn.prepareStatement(SQL); //conn 객체에서 prepareStatement를 실행하도록 준비
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
if(rs.next()) {
return rs.getBoolean(1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return 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();
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
pstmt.executeUpdate();
return true;
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return false; // 데이터베이스 오류
}
}
|
* 보충
생성자란?
1. 클래스 이름과 동일한 이름을 가진 메소드
2. 반환형이 선언되어 있지 않으면서, 반환하지 않는 메소드
즉, 메소드 이름이 클래스명과 똑같고, void나 int 처럼 반환형이 선언되어 있지도 않고 , 리턴값을 반환 하지도 않는다. 입력만 있을 뿐 출력은 없다. 초기화만 해주는 작업을 한다
'JAVA > JSP' 카테고리의 다른 글
JSP로 강의평가 웹 사이트 - 로그인 및 로그아웃 구현하기 (0) | 2020.05.08 |
---|---|
JSP 강의평가 웹사이트 회원가입 및 이메일 인증 (0) | 2020.05.07 |
JSP 강의평가 웹사이트 - 데이터베이스 구축 (0) | 2020.05.03 |
JSP 강의평가 웹사이트 - 로그인 및 회원가입 화면 (0) | 2020.05.03 |
JSP 강의평가 웹사이트 - 메인화면 웹디자인 (0) | 2020.05.03 |