1월 17일(1)
오늘 배운 것
- 어제 한 login페이지 만들기에 가입하기 추가하기
else if(action.equals("createaccount")) { // 가입하기 페이지에서 작성 후 가입하기버튼 클릭 시
String email = request.getParameter("email");
String password = request.getParameter("password");
String repeatpassword = request.getParameter("repeatpassword");
request.setAttribute("email", email); // email 주소를 request에 저장
// password를 두 번 적을 때 서로 같지 않을 경우
if (!password.equals(repeatpassword)) {
request.setAttribute("message", "password가 같지 않습니다.");
request.getRequestDispatcher("/createaccount.jsp").forward(request, response);
} else {
User user = new User(email, password);
// 유효성 검사 불합격 했을 경우
if (!user.validate()) {
request.setAttribute("message", user.getMessage());
request.getRequestDispatcher("/createaccount.jsp").forward(request, response);
}
else {// 합격 했을 경우 email 중복 확인 후 새 계정 만들기
try {
if (account.exists(email)) { // 중복이 있을 경우
request.setAttribute("message", "이미 존재하는 email입니다.");
request.getRequestDispatcher("/createaccount.jsp").forward(request, response);
} else { // 새 계정을 만들기
account.create(email, password);
request.getRequestDispatcher("/createsuccess.jsp").forward(request, response);
}
} catch (SQLException e) { // SQL에러 발생 시
request.setAttribute("message", "SQL에러 발생");
request.getRequestDispatcher("/error.jsp").forward(request, response);
}
}
}
- SQL문으로 가입하기에서 입력한 email의 중복확인과 DB에 입력하기
public boolean exists(String email) throws SQLException {
// 이미 등록된 email이 있을 경우 true 없으면 false
String sql = "SELECT COUNT(*) AS count FROM users where email=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, email);
ResultSet rs = pstmt.executeQuery();
int count = 0;
if (rs.next()) { // 결과가 있으면
count = rs.getInt("count"); // count 열의 값을 리턴
}
if (count == 0) return false; // 없으면 false 있으면 true
return true;
}
public void create(String email, String password) throws SQLException {
// DB에 새 user의 email, password를 입력
String sql = "insert into users(email, password) values(?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, email);
pstmt.setString(2, password);
pstmt.executeUpdate(); // 결과 rs가 없을 경우(입력, 수정, 삭제)
pstmt.close();
}
Author And Source
이 문제에 관하여(1월 17일(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tutu10000/1월-17일1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)