[jsp] DTO / VO / DB 연결하기

seulki·2022년 10월 17일
0

jsp

목록 보기
29/51

🎈 DTO (Data Transfer Object) / VO (Value Object)

  • 양쪽으로 전송되어 오고가는 데이터들을 담은 객체,
    JSP에서는 Bean이라고 부른다.
  • 여러 데이터들을 포장해서 만든 데이터 포장 객체
  • 사용자가 입력한 값객체 형태로 받을 수 있게 클래스 구성
  • 폼에서 입력된 데이터들하나의 DTO 객체로 변환 가능
  • 하나의 데이터베이스 레코드를 저장하여 레코드와 같은 구조를 가진다.
    입력된 데이터들 -> 하나의 DTO 객체 -> DB에서 한 행으로 저장
  • 레코드(행)가 50개이면 DTO 객체가 50개이다.
  • 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 객체이다. (데이터를 담아서 전달하는 역할만 한다.)
    -> 만약 DTO객체로 묶어서 전달하지 않는다면, 파라미터로 값을 받기 위해 컬럼마다 getter, setter 작업을 해야하기 때문에, 번거롭다.
  • MVC1모델

1.사용자가 요청을 보내면 컨트롤러에서 먼저 받는다.

2. 컨트롤러에서 model 영역으로 데이터를 보내야 한다고 판단하면,
DTO 객체로 데이터를 전송한다.

3. 데이터를 전송할때는 getParameter, setParameter를 하는 것이 아니고,
DTO 객체로 전달하는 것이다.

4. 컨트롤러가 DTO 객체로 데이터를 Model 영역으로 넘겨주면,
데이터를 그대로 넘겨받을 수도 있고, 비즈니스 로직에 따라 데이터를 가공할 수 도 있다. ( ex) 비밀번호 암호화 등등)

5. 데이터를 가공하는 영역을 Business, Service, Object 영역이라고 하고,
데이터를 비즈니스 로직에 처리하는 부분Service 영역이라고 한다.

만약 데이터의 가공이 필요가 없거나, 로직이 복잡하지 않다면
service 영역을 만들지 않기도 한다.

6. 가공하면서 객체를 생성하거나, 로직이 길어질 수 있기 때문에
직접적으로 DB에 접근하는 자바 클래스 파일 영역DAO라고 한다.



🎈 DAO (Data Access Object) / VO (Value Object)

  • 데이터에 접근, 데이터를 관리하기 위한 객체
  • 데이터들을 관리 (추가, 수정, 삭제, 읽기) 하는
    여러 메소드들이 여러 메소드들이 정의되어 있다.
  • insert, delete, select, update레코드 처리를 주 목적으로 한다.
    직접적으로 DB와 connection
  • 전달받은 DTO/VO 객체데이터베이스 서버에 저장한다.
  • 데이터베이스 서버로부터 레코드select한 후,
    DTO 객체로 변경해 가져옴
  • SQL을 직접 수행하는 기능을 가진다.
  • 데이터 접근을 목적으로 하는 객체이다.
  • DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 Object이다.


🎈 DTO 만들기

  1. 패키지와 파일 생성

  2. UserDTO

package com.koit.web.dto;

public class UserDTO {
	//데이터를 담는 객체
	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;
	}	
}
  • 자바 빈즈인 DTO 객체 생성 완료!


🎈 DAO 만들기

  1. 패키지와 파일 생성
  1. UserDTO
package com.koit.web.dao;

import com.koit.web.dto.UserDTO;

public class UserDAO {
// DB 커넥션 맺는 곳 (insert, update, select, delete) 
//-> CRUD와 관련된 query문은 DAO에서 정의!
// 회원가입 (DTO, DAO) , 게시판 (DTO, DAO) 다 따로 만들어지는 것! 
	
	public boolean join(UserDTO dto) { 
    //회원가입에 대한 정보는 UserDTO에 담겨져있음
		//DB 처리
		// 비지니스로직, 서비스 영역
		
		return true;
	}
	
}
  • DTO 객체에 담긴 정보를 가지고 DAO에서 DB 커넥션을 통해
    CRUD 작업을 한다.
  • 로직에 처리 결과는 true, false로 반환한다.!


🎈 controller MVC1

  • 사용자의 요청을 가장 먼저 받아 판단한다.
  • controller가 jsp 파일이면 MVC1 모델
  • view단인jsp 파일에서 사용자의 요청을 가장 먼저 받는 파일 controller!

  • form 태그에서 action속성으로 연결되는 곳이 controller가 되는 것이다.

- controller인 join.jsp 코드

<%@page import="com.koit.web.dto.UserDTO"%>
<%@page import="com.koit.web.dao.UserDAO"%>
<%@ 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>
 <%
    	//컨트롤러역할이 jsp파일로되어있으면 MVC1
		String userid = request.getParameter("userid");
		String userpw = request.getParameter("userpw");
		String username = request.getParameter("username");
		String userphone = request.getParameter("userphone");
		
		UserDAO udao = new UserDAO();
		UserDTO udto = new UserDTO();
		
		//data set
		udto.setUserid(userid);
		udto.setUserpw(userpw);
		udto.setUsername(username);
		udto.setUserphone(userphone);
		
		boolean check = udao.join(udto);

		if(check){
			//가입성공
		}else{
			//가입실패
		}
		
%>
</body>
</html>
  1. jsp파일에서 사용자가 요청보낸 값들을 파라미터로 넘겨받는다.
  2. DTO 와 DAO 객체를 생성한다.
  3. DTO 객체에 넘겨받은 값을 저장한다.
    -> 데이터 셋팅 후, DTO 객체 통째로 데이터 이동이 이루어 진다.
  4. DTO 객체를 생성한 후 DB 작업을 위해 DAO에게 파라미터로 DTO를 넘겨준다.
    -> DAO 객체에 파라미터로 DTO 객체를 넘겨준다.


🎈 controller MVC2

  • 사용자의 요청을 가장 먼저 받아 판단한다.
  • controller가 Servlet java 파일이면 MVC2 모델
  • view단인 jsp 파일에서 사용자의 요청을 가장 먼저 받는 파일 controller!


  • form 태그에서 join.java 파일로 요청을 보냄, /join으로 연결된 자바파일이 컨트롤러!

- controller인 JoinServlet.java 코드

package com.koit.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.koit.web.dao.UserDAO;
import com.koit.web.dto.UserDTO;

@WebServlet("/join")
public class JoinServlet extends HttpServlet{

	//컨트롤러 영역을 자바파일로 만들면 MVC2패턴!
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String userid = req.getParameter("userid");
		String userpw = req.getParameter("userpw");
		String username = req.getParameter("username");
		String userphone = req.getParameter("userphone");
		
		UserDAO udao = new UserDAO();
		UserDTO udto = new UserDTO();
		
		//data set
		udto.setUserid(userid);
		udto.setUserpw(userpw);
		udto.setUsername(username);
		udto.setUserphone(userphone);
		
		boolean check = udao.join(udto);
		if(check){
			//가입성공
		}else{
			//가입실패
		}
		
	}
}
  • MVC1과 같은 코드일 뿐 컨트롤러의 역할을 jsp파일에서 하는지 java 파일에서 하는지의 차이이다!


🎈 DB 연결하러가기!

profile
웹 개발자 공부 중

0개의 댓글