Value Object_VO 클래스가 뭔지 모르겠습니다.
VO 클래스란?
VO 클래스를 작성하여 DB와 관련된 변수들을 관리할 수 있습니다.
VO 클래스는 일반적으로 특정 테이블의 자료를
한 row 단위로 저장할 수 있도록
칼럼 정보를 변수로 나열한 것입니다.
그러니까
이렇게 UserVO라고 .java를 만들어놓고
나의 MySQL을 보면
이런 테이블이 있으니까
각 컬럼에 맞는 변수들을 UserVO에 선언하고 나면?
private String userId;
private String userPw;
private String userName;
private String Email;
이 메서드에 선언해둔 변수들을 이용해 쉽게 SQL DB를 관리할 수 있게 된다는 말인 것 같습니다.
private으로 선언했기 때문에
getter // setter를 생성해줍니다.
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPw() {
return userPw;
}
public void setUserPw(String userPw) {
this.userPw = userPw;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
이제 이전에 만들어 두었던 userLoginCheck.jsp로 가서
VO라는 게 얼마나 편한 지 사용해보겠습니다.
UserVO user = new UserVO();로 선언해주고 메서드도 생성해줍시다.
<%
request.setCharacterEncoding("UTF-8");
String uId = request.getParameter("userId");
String uPw = request.getParameter("userPw");
String dbType = "com.mysql.cj.jdbc.Driver";
String connectUrl = "jdbc:mysql://localhost:3306/jdbcprac2?serverTimezone=UTC";
String connectId = "root";
String connectPw = "mysql";
ResultSet rs = null;
// ResultSet의 데이터를 자바 클래스로 교체할 수 있도록 UserVO 생성
UserVO user = new UserVO();
try {
Class.forName(dbType);
Connection con = DriverManager.getConnection(connectUrl, connectId, connectPw);
String sql = "SELECT*FROM userinfo WHERE user_id = ?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, uId);
rs = pstmt.executeQuery();
if(rs.next()){
user.setUserId(rs.getString(1));
user.setUserPw(rs.getString(2));
user.setUserName(rs.getString(3));
user.setEmail(rs.getString(4));
System.out.println(user.getUserId());
System.out.println(user.getUserPw());
System.out.println(user.getUserName());
System.out.println(user.getEmail());
String dbPw = user.getUserPw();
if(uPw.equals(dbPw)) {
session.setAttribute("s_id", uId);
session.setAttribute("s_pw", dbPw);
response.sendRedirect("http://localhost:8181/JSPbasic/user/loginWelcome.jsp");
} else {
response.sendRedirect("http://localhost:8181/JSPbasic/user/userPwFail.jsp");
}
} else {
response.sendRedirect("http://localhost:8181/JSPbasic/user/userIdFail.jsp");
}
rs.close(); // ResultSet, Connection, PreparedStatement는 .close();로 닫을 수 있음
} catch(Exception e){
e.printStackTrace();
}
%>
로그인 로직이 더 편리해진 것 같기도 한데
아직은 익숙하지 않은 개념이라 어렵습니다.
ResultSet은 스프링부트로 가거나 할수록 점점 더 쓰기 어려워진다고 하니까
어서 VO에 익숙해져야할 것 같습니다.
결론
VO 클래스는
DB테이블의 각 컬럼을 미리 메서드에 준비해두는 것이다.
이걸 불러와서 변수를 쉽게 지정할 수 있다.
일단은 여기까지 입니다.
Author And Source
이 문제에 관하여(Value Object_VO 클래스가 뭔지 모르겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nugoory20/Value-ObjectVO-클래스가-뭔지-모르겠습니다저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)