DTO,VO 와 DAO

전영덕·2023년 3월 26일
0

JSP

목록 보기
9/16

1. DTO(Data Transfer Object) / VO(Value Object)

  • 양쪽으로 전송되어 오고가는 데이터들을 담은 객체, JSP에서는 Bean이라고 부른다. 여러 데이터들을 포장해서 만든 데이터 포장 객체
  • 사용자가 입력한 값을 객체 형태로 받을 수 있게 클래스 구성
  • 폼에서 입렫된 데이터들은 하나의 DTO객체로 변환가능
  • 하나의 데이터베이스 레코드를 저장하여 레코드와 같은 구조를 갖는다.
  • 레코드가 50개면 DTO객체도 50개
  • 한 개의 레코드는 빈즈 클래스 객체 하나로 매핑
  • 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 객체

예시 파일

com.codingbox.vo패키지 안에
RegitVo.java

package com.codingbox.vo;

public class RegitVo {

	private String userid;
	private String userpw;
	private String username;
	private String userphone;
	
	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 getUserphone() {
		return userphone;
	}
	public void setUserphone(String userphone) {
		this.userphone = userphone;
	}
	
}

2. DAO(Data Access Object)

  • 데이터에 접근, 데이터를 관리하기 위한 객체, 데이터를 관리(추가, 수정, 삭제, 읽기)하는 여러 메서드들이 정의되어 있다.
  • insert, delete, update, select등 레코드 처리를 주 목적으로 한다.
  • DTO객체를 데이터베이스 서버에 저장한다.
  • 데이터 베이스 서버로부터 레코드를 select한 후, DTO객체로 변경해 가져온다.
  • SQL을 직접 실행하는 기능을 갖는다.
  • JSP에서 데이터 베이스 접속 로직을 Beans로 작성하여 DB정보 변경시 쉽게 변경사항을 구현할 수 있다.
  • 데이터 접근을 목적으로 하는 객체
  • 커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의 인터페이스를 사용하여 필요한 자료에 접근하는 것
  • DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트

예시 파일은 아직 DB연결 전이라 추후에 다시 나올 예정. 그래도 써 놓긴함

com.codingbox.dao패키지 안에
UserDao.java

회원가입 폼을 통한 연습(feat.validation check)

    1. validation check를 포함한 뷰 화면
    1. 넘겨받은 정보를 DTO 객체에 포장해서 넘기고 다시 불러오기

--------풀이-------

    1. regit/joinview.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
</head>
<body>
	<h3>회원가입 폼</h3>
	<form action="join.jsp" method="get" id="joinForm">
		아이디 : <input type="text" name = "userid" id="userid"><br>
		비밀번호 : <input type="password" name = "userpw" id="userpw"><br>
		이름 : <input type="text" name = "username" id="username"><br>
		휴대폰번호 : <input type="text" name = "userphone" id="userphone"><br>
		<input type="button" value="회원 가입" onclick="sendit()">
	</form>
	<script>
	//아이디는 빈값, 비밀번호는 빈값과 8자리이상, 이름 빈값, 휴대폰 번호도 빈값에 대한 처리
	function sendit(){
		
		if(!$("#userid").val()){
			alert("아이디칸 비었자나");
			$("#userid").focus();
			return false;
		}
		if(!$("#userpw").val()){
			alert("비번칸 비었자나");
			$("#userpw").focus();
			return false;
		}
		if($("#userpw").val().length<8){
			alert("비번칸8자리 이상 하라니깐");
			$("#userpw").focus();
			return false;
		}
		if(!$("#username").val()){
			alert("이름칸 비었자나");
			$("#username").focus();
			return false;
		}
		if(!$("#userphone").val()){
			alert("폰번칸 비었자나");
			$("#userphone").focus();
			return false;
		}
		$("#joinForm").submit();
	}
	</script>
</body>
</html>
    1. regit/join.jsp
<%@page import="com.codingbox.dao.UserDao"%>
<%@page import="com.codingbox.vo.RegitVo"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String userid = request.getParameter("userid");
		String userpw = request.getParameter("userpw");
		String username = request.getParameter("username");
		String userphone = request.getParameter("userphone");
	
		RegitVo rVo = new RegitVo();
		rVo.setUserid(userid);
		rVo.setUserpw(userpw);
		rVo.setUsername(username);
		rVo.setUserphone(userphone);
// 		이렇게 데이터의 꾸러미로 만드는 것을 VO혹은 DTO라고 한다.
		UserDao udao = new UserDao();
		udao.join(rVo);
		boolean check = udao.join(rVo);
		
		//회원 가입 성공시 //check 변수 자체가 boolean타입이다
		if(check){
			
		} else{
			
		}

// 		DB 처리가 일어났다! 라고 가정
// 		Insert
// 		회원가입 성공시
// 		회원가입 실패시
	%>
	아이디 :<%= userid %> <br>
	비번 : <%= userpw %> <br>
	이름 :<%= username %> <br>
	폰번 : <%= userphone %> <br>
	
</body>
</html>

0개의 댓글