본문 바로가기
스프링/mvc패턴

mvc패턴) model2 의 model, view, controller (dto, dao) 개념

by CodeMango 2023. 2. 16.

모델2 패턴에서 DTO, DAO, Controller, View로 나눠서 설명합니다.

 

모델 : dao, dto

         DAO는 데이터베이스와 연동하여 데이터를 읽고 쓰는 역할을 수행하는 객체를 의미하며,

         DTO는 데이터를 전달하기 위한 객체를 의미합니다.

        이 둘은 모델에서 데이터를 처리하고 저장하는 역할을 담당합니다.

 

뷰  :  view.jsp

        사용자에게 데이터를 표시하는 역할을 합니다. View는 모델로부터 전달받은 데이터를 사용하여

        사용자가 볼 수 있는 형태로 출력하거나, 사용자의 입력을 받아 컨트롤러에 전달합니다.

 

컨트롤러 : controller

                 사용자의 요청을 받아 해당 요청에 대한 처리를 수행하는 역할을 합니다.

                 Controller는 요청을 받아 모델을 호출하여 데이터를 처리하고, 그 결과를 다시 뷰(View)에 전달합니다.

 

1. dto클래스

public class UserDTO {
    private int id;
    private String name;
    private String email;
    private int age;

    // Getter, Setter
}
  • 데이터를 저장하고 관리하는 클래스인 모델의 예시입니다.
  • 사용자 정보를 저장하는 id, name, email, age 필드와 이를 다루기 위한 Getter/Setter 메서드를 가지고 있습니다.

 

2. dao클래스

public class UserDAO {
    public UserDTO getUserById(int id) {
        // id를 이용하여 데이터베이스에서 사용자 정보를 가져와 UserDTO 객체를 생성하여 반환
    }

    public void addUser(UserDTO user) {
        // UserDTO 객체를 이용하여 데이터베이스에 사용자 정보를 추가
    }

    public void updateUser(UserDTO user) {
        // UserDTO 객체를 이용하여 데이터베이스에 사용자 정보를 업데이트
    }

    public void deleteUser(int id) {
        // id를 이용하여 데이터베이스에서 해당 사용자 정보를 삭제
    }
}
  • 데이터베이스와 연동하여 데이터를 조회하거나 수정하는 클래스인 DAO의 예시입니다.
  • JDBC를 사용하여 데이터베이스에 접근하고, User 모델 객체를 데이터베이스에 저장하거나 조회하는 메서드를 가지고 있습니다.

3. Controller ( Servlet 사용)

@WebServlet("/user/*")
public class UserController extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uri = request.getRequestURI();
        String contextPath = request.getContextPath();
        String command = uri.substring(contextPath.length());

        if (command.equals("/user/view")) {
            int id = Integer.parseInt(request.getParameter("id"));

            UserDAO dao = new UserDAO();
            UserDTO user = dao.getUserById(id);

            request.setAttribute("user", user);
            RequestDispatcher rd = request.getRequestDispatcher("/user/view.jsp");
            rd.forward(request, response);
        } else if (command.equals("/user/form")) {
            RequestDispatcher rd = request.getRequestDispatcher("/user/form.jsp");
            rd.forward(request, response);
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uri = request.getRequestURI();
        String contextPath = request.getContextPath();
        String command = uri.substring(contextPath.length());

        if (command.equals("/user/add")) {
            String name = request.getParameter("name");
            String email = request.getParameter("email");
            int age = Integer.parseInt(request.getParameter("age"));

            UserDTO user = new UserDTO();
            user.setName(name);
            user.setEmail(email);
            user.setAge(age);

            UserDAO dao = new UserDAO();
            dao.addUser(user);

            response.sendRedirect(request.getContextPath() + "/user/list");
        } else if (command.equals("/user/update")) {
            int id = Integer.parseInt(request.getParameter("id"));
            String name = request.getParameter("name");
            String email = request.getParameter("email");
            int age = Integer.parseInt(request.getParameter("age"));

            UserDTO user = new UserDTO();
            user.setId(id);
            user.setName(name);
            user.setEmail(email);
            user.setAge(age);

            UserDAO dao = new UserDAO();
            dao.updateUser(user);

            response.sendRedirect(request.getContextPath() + "/user/list");
        } else if (command.equals("/user/delete")) {
            int id = Integer.parseInt(request.getParameter("id"));

            UserDAO dao = new UserDAO();
            dao.deleteUser(id);

            response.sendRedirect(request.getContextPath() + "/user/list");
        }
    }
}
  • 모델과 뷰를 연결하여 사용자의 요청을 처리하고 응답을 생성하는 클래스인 컨트롤러의 예시입니다.
  • 사용자의 요청을 분석하고, 요청에 필요한 데이터를 모델에게 전달하여 처리한 결과를 뷰에게 전달합니다.

 

4. view  (view.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>User Information</title>
</head>
<body>
    <h1>User Information</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
            <th>Age</th>
        </tr>
        <c:forEach var="user" items="${userList}">
            <tr>
                <td>${user.id}</td>
                <td>${user.name}</td>
                <td>${user.email}</td>
                <td>${user.age}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>
  • 사용자에게 결과를 보여주는 인터페이스인 뷰의 예시입니다.
  • HTML과 JSP 태그를 사용하여 사용자 정보를 출력하는 코드입니다. 사용자의 요청에 따라 컨트롤러에서 전달받은 모델의 데이터를 출력합니다.

* c:forEach 태그:  userList 속성에 저장된 사용자 정보를 반복해서 출력합니다.

댓글