-
오늘은 어제와 마찬가지로 실습을 했다.
회원의 회원가입 (아이디 중복 확인) -> 로그인 -> 마이페이지 -> 비밀번호 변경 -> 회원정보 수정 -> 회원 탈퇴 -> 로그아웃까지!
하나 더 알려주신 것은, finally를 적으면서 일일히 conn.close(); 등등을 적어주기 귀찮으니
# try with resource- try문을 작성할 때 자원 객체를 소괄호 안에 전달하면 try블록이 끝날 때,자동으로 자원을 해제해 준다.- 자동으로 종료되는 자원은 반드시 AutoCloseable 인터페이스의 구현체여야 한다.이것을 사용하라는 것이었다. 확실히 편했다.@Overridepublic boolean confirmId(String id) {boolean flag = false;String sql = "SELECT * FROM my_user WHERE user_id=?";try (Connection conn = ds.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql)){pstmt.setString(1, id);ResultSet rs = pstmt.executeQuery();if(rs.next()) flag = true;} catch (SQLException e) {e.printStackTrace();}return flag;}어려웠던 부분은, 회원가입을 할 때 아이디 중복인지 확인하는 부분이었는데,
BoardDAO에다가
@Overridepublic int userCheck(String id, String pw) {int check = 0;String sql = "SELECT user_pw FROM my_user WHERE user_id=?";try(Connection conn = ds.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql)){pstmt.setString(1, id);ResultSet rs = pstmt.executeQuery();if(rs.next()) {String dbPw = rs.getString("user_pw");//DB에서 user_pw를 뜯어와서 사용자가 입력한 String pw와 비교해서//일치하면 1, 불일치하면..0 이게!! 헷갈렸다.if(dbPw.equals(pw)) check = 1;else check = 0;}else {check = -1;}} catch (Exception e) {e.printStackTrace();}return check;}해 주고,<%@page import="kr.co.jsp.user.model.UserVO"%><%@page import="kr.co.jsp.user.model.UserDAO"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%request.setCharacterEncoding("utf-8");String id = request.getParameter("id");UserDAO dao = UserDAO.getInstance();if(dao.confirmId(id)){ //아이디가 중복됨! %><script>alert("아이디가 중복되었습니다.");history.back();</script><% } else{ //아이디가 중복되지 않음!//회원 가입 처리가 들어가면 됩니다UserVO vo = new UserVO(id,request.getParameter("pw"),request.getParameter("name"),request.getParameter("email"),request.getParameter("address"));dao.insertUser(vo); %><script>alert("회원가입을 환영합니다!");location.href="user_login.jsp";</script><%}%>오늘도.. 실습이라 하루가 빨리 지나간 느낌이다.