UsersDao
package test.users.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import test.users.dto.UsersDto;
import test.util.DbcpBean;
public class UsersDao {
private static UsersDao dao;
//외부에서 객체 생성할수 없도록
private UsersDao() {}
//참조값을 리턴해주는 static 메소드
public static UsersDao getInstance() {
if(dao==null) {
dao=new UsersDao();
}
return dao;
}
//비밀 번호를 수정 반영하는 메소드
public boolean updatePwd(UsersDto dto) {
Connection conn = null;
PreparedStatement pstmt = null;
int flag = 0;
try {
conn = new DbcpBean().getConn();
//실행할 sql 문
String sql = "UPDATE users"
+ " SET pwd=?"
+ " WHERE id=? AND pwd=?";
pstmt = conn.prepareStatement(sql);
//? 에 값 바인딩하기
pstmt.setString(1, dto.getNewPwd());
pstmt.setString(2, dto.getId());
pstmt.setString(3, dto.getPwd());
flag = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
if (flag > 0) {
return true;
} else {
return false;
}
}
//인자로 전달된 아이디에 해당하는 가입정보를 삭제하는 메소드
public boolean delete(String id) {
Connection conn = null;
PreparedStatement pstmt = null;
int flag = 0;
try {
conn = new DbcpBean().getConn();
//실행할 insert, update, delete 문 구성
String sql = "DELETE FROM users"
+ " WHERE id=?";
pstmt = conn.prepareStatement(sql);
//? 에 바인딩할 내용이 있으면 바인딩한다.
pstmt.setString(1, id);
flag = pstmt.executeUpdate(); //sql 문 실행하고 변화된 row 갯수 리턴 받기
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
if (flag > 0) {
return true;
} else {
return false;
}
}
//회원 가입 정보를 수정반영하는 메소드
public boolean update(UsersDto dto) {
Connection conn = null;
PreparedStatement pstmt = null;
int flag = 0;
try {
conn = new DbcpBean().getConn();
//실행할 insert, update, delete 문 구성
String sql = "UPDATE users"
+ " SET email=?, profile=?"
+ " WHERE id=?";
pstmt = conn.prepareStatement(sql);
//? 에 바인딩할 내용이 있으면 바인딩한다.
pstmt.setString(1, dto.getEmail());
pstmt.setString(2, dto.getProfile());
pstmt.setString(3, dto.getId());
flag = pstmt.executeUpdate(); //sql 문 실행하고 변화된 row 갯수 리턴 받기
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
if (flag > 0) {
return true;
} else {
return false;
}
}
//인자로 전달된 아이디에 해당하는 가입정보를 리턴해주는 메소드
public UsersDto getData(String id) {
//회원 정보를 담을 UsersDto
UsersDto dto=null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = new DbcpBean().getConn();
//select 문 작성
String sql = "SELECT pwd,email,profile,regdate"
+ " FROM users"
+ " WHERE id=?";
pstmt = conn.prepareStatement(sql);
// ? 에 바인딩 할게 있으면 여기서 바인딩한다.
pstmt.setString(1, id);
//select 문 수행하고 ResultSet 받아오기
rs = pstmt.executeQuery();
//while문 혹은 if문에서 ResultSet 으로 부터 data 추출
if (rs.next()) {
dto=new UsersDto();
dto.setId(id);
dto.setPwd(rs.getString("pwd"));
dto.setEmail(rs.getString("email"));
dto.setProfile(rs.getString("profile"));
dto.setRegdate(rs.getString("regdate"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
return dto;
}
//인자로 전달되는 dto 에 있는 id, pwd 가 유효한 정보인지 여부를 리턴해 주는 메소드
public boolean isValid(UsersDto dto) {
//맞는 정보인지 여부를 담을 지역 변수를 선언하고 초기값 false 넣어주기
boolean isValid=false;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//Connection 객체의 참조값 얻어오기
conn = new DbcpBean().getConn();
//실행할 sql 문 준비
String sql = "SELECT *"
+ " FROM users"
+ " WHERE id=? AND pwd=?";
pstmt = conn.prepareStatement(sql);
//? 에 값 바인딩하기
pstmt.setString(1, dto.getId());
pstmt.setString(2, dto.getPwd());
//query 문 수행하고 결과 받아오기
rs = pstmt.executeQuery();
if (rs.next()) { //만일 select 된 row 가 있으면
isValid=true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
return isValid;
}
//회원 정보를 저장하는 메소드
public boolean insert(UsersDto dto) {
Connection conn = null;
PreparedStatement pstmt = null;
int flag = 0;
try {
conn = new DbcpBean().getConn();
//실행할 insert, update, delete 문 구성
String sql = "INSERT INTO users"
+ " (id, pwd, email, regdate)"
+ " VALUES(?, ?, ?, SYSDATE)";
pstmt = conn.prepareStatement(sql);
//? 에 바인딩할 내용이 있으면 바인딩한다.
pstmt.setString(1, dto.getId());
pstmt.setString(2, dto.getPwd());
pstmt.setString(3, dto.getEmail());
flag = pstmt.executeUpdate(); //sql 문 실행하고 변화된 row 갯수 리턴 받기
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
if (flag > 0) {
return true;
} else {
return false;
}
}
}
UsersDto
package test.users.dto;
public class UsersDto {
private String id;
private String pwd;
private String email;
private String profile;
private String regdate;
private String newPwd;
public UsersDto() {}
public UsersDto(String id, String pwd, String email, String profile, String regdate, String newPwd) {
super();
this.id = id;
this.pwd = pwd;
this.email = email;
this.profile = profile;
this.regdate = regdate;
this.newPwd = newPwd;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getProfile() {
return profile;
}
public void setProfile(String profile) {
this.profile = profile;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
public String getNewPwd() {
return newPwd;
}
public void setNewPwd(String newPwd) {
this.newPwd = newPwd;
}
}
'Servlet&JSP' 카테고리의 다른 글
Step04_Final (sql 자료) (0) | 2022.08.24 |
---|---|
Step04_Final (users, private) 비밀번호 수정, 회원 탈퇴 (0) | 2022.08.24 |
Step04_Final (users/private, 가입정보 관리) (0) | 2022.08.23 |
Step04_Final (context path 정리, 페이징 처리) (0) | 2022.08.23 |
QuantumDB 시작하기 (0) | 2022.08.22 |