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();
	}

      

좋은 웹페이지 즐겨찾기