Purple Bobblehead Bunny

Backend/JAVA

[JAVA] MVC Pattern

준영어린이 2022. 5. 9. 19:52

 

MVC 패턴 

 

효과적인 웹 어플리케이션 설계 및 프레임워크 활용을 위해서 꼭 필요한 개념

Model-View-Controller의 약어로 주로 GUI 기반의 어플ㄹ케이션 개발에 사용된 디자인 패턴

화면과 데이터 처리를 분리 해 코드간의 종속성을 줄이고, 구성요소간의 역할을 명확하게 함으로써 코드 분리가 쉽고 

협업을 유리하게 할 수 있다.

 

 

MVC Pattern 구조

 

 

Model(모델)

  • 데이터를 처리하는 영역
  • 실제 구현에는 데이터베이스 연동을 위한 DAO(Data Access Object) 클래스,                                                                 데이터 구조를 표현하는 DO(Data Object, Entity) 클래스로 구성
  • View, Controller에 독립적인 구조
  • 효과적인 구현을 위해 JPA를 사용하는 경우 DAO는 생략되거나, 구현 범위가 축소 될 수 있다.

public class Student {
    private String rollNo;
    private String name;
    
public String getRollNo() {
           return rollNo;
}

public void setRollNo(String rollNo) {
    this.rollNo = rollNo;
}

public String getName() {
    return name;
}

public void setName(String name) {
        this.name=name;
}

 

 

 

View(뷰)

 

  • 화면을 담당하는 부분(JSP)
  • 컨트롤러로부터 전달된 데이터의 출력과 HTML, CSS 등을 통해 화면 디자인 처리
  • 기본적으로 Model,Controller와의 종속성이 없도록 구현

public class StudentView {
    public void printStudentDetails(String studentName, String studentRollNo) {
            System.out.println("Student: ");
            System.out.println("Name: " + studentName);
            System.out.println("Roll No: " + studentRollNo);
    }     
}

 

 

 

 

Controller(컨트롤러)

- MVC 패턴의 핵심. 모든 사용자 요청의 중심에 위치 --> View와 종속관계

- JSP, Servlet 모두 가능하고 스프렝프레임워크로 확장 등을 생각한다면 Servlet 기반의 구현 권장


public class StudentController {
   private Student model;
   private StudentView view;
   
   
public StudentController(Student model, StudentView view) {
        this.model = model;
        this.view = view;
}

public void setStudentName(String name) {
        model.setName(name);
}

public String getStudentName() {
       return model.getName();
}

public void setStudentRollNo(String rollNo) {
       model.setRolNo(rollNo);
}       

public void updateView() {
     view.printStudentDetails(model.getName(), model.getRollNo());
    }
}

 

 

어플리케이션 ( 컨트롤러 사용 ) 

 

public class MVCPatternDemo {
   public static void main(String[] args) {
    
     Student model = retriveStudentFromDatabase();
     
     StudentView view = new StudentView();
     
     StudentController controller = new StudentController(model, view);
     
     controller.updateView();
     
     controller.setStudentName("John");
     
     controller.updateView();
  }
  
  private static Student retriveStudentFromDatebase() {
       Student student = new Student();
       student.setName("JUNYOUNG");
       student.setRollNo("15");
       return student;
    }
}

 

 

'Backend > JAVA' 카테고리의 다른 글

[JAVA] ServerSocket  (0) 2022.05.02
[JAVA] HashMap  (0) 2022.04.27
[JAVA] chatAt(int i) - '0'  (0) 2022.04.23
[JAVA] 상속(Inheritance)  (0) 2022.04.22
[JAVA] Singleton Pattern  (0) 2022.04.21