Value Object_VO 클래스가 뭔지 모르겠습니다.

3383 단어 mysqljspjsp

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테이블의 각 컬럼을 미리 메서드에 준비해두는 것이다.

이걸 불러와서 변수를 쉽게 지정할 수 있다.

일단은 여기까지 입니다.

좋은 웹페이지 즐겨찾기