BackEnd/Spring

Spring기초_Day6_웹 개발 모델

Leo.K 2022. 7. 11. 00:48

[ 모델 1 ]

크롬이나 익스플로어같은 브라우저를 사용하여 네이버에게 Request(요청)을 하면 JSP파일안에서 DB와 연동하여 데이터를 가공하고 사용자에게 Response(응답)한다. 

  • JSP에서 비즈니스 로직(로그인 요청을 했을때, 입력한 아이디와 비밀번호가 DB에 있는지 확인하는 작업 등), View 모두 처리(로그인 이후에 보여지는 화면)
  • 구조가 단순하여 익히기 쉬움
  • 구현이 익숙하고, 작은 단위의 어플리케이션에 적합
  • 출력을 위한 뷰와 로직 처리를 위한 자바 코드가 섞여 있기 때문에 JSP 코드의 복잡성이 증가 -> 스파게티 코드
  • 업무 분업이 어려움

JSP가 모든 일을 담당한다.

 

[ 모델 2 ]

  • JSP에서 모든 것을 담당하던 모델1 방식과 달리 뷰를 담당하는 JSP페이지비즈니스 로직을 위한 서블릿 클래스로 나누어서 브라우저의 요청을 처리함
  • 요청이 들어오면 로직 처리는 모델(서블릿)이 담당하고, 요청 결과를 보여주는 뷰는 JSP 가 담당하고, 이를 위한 흐름 제어를 컨트롤러인 서블릿이 담당하는 구조
  • 출력을 위한 뷰와 로직을 위한 자바 코드가 분리되어 View를 담당하는 코드가 복잡하지 않음
  • 뷰, 로직처리에 대한 분업이 좋고, 유지보수성이 좋음
  • 모델 1에 비하여 설계가 어려움

 

[ MVC(Model-View-Controller) ]

  • SW공학에서 사용되는 디자인 패턴
  • 어플리케이션의 역할을 모델, 뷰, 컨트롤러로 구분
    • 모델: 정보(데이터)
      • 서비스 클래스, 자바빈으로 비즈니스 로직을 처리하는 모든 것
    • 뷰: 텍스트, 체크박스 등과 같은 HTML로 표현되는 사용자 인터페이스
      • JSP와 같은 클라이언트에 출력되는 화면
    • 컨트롤러: 데이터와 비즈니스 로직 사이의 상호동작
      • MVC패턴의 모든 흐름 제어를 맡는다.
  • MVC 패턴을 웹 개발에 도입한 구조를 Model2라고 한다.

 

DispatcherServlet(Front Controller)

  • 클라이언트의 요청을 수신한다. 

Handler Mapping

  • 요청된 URL과 맵핑되는 Controller 검색 

Handler Adapter

  • Handler Mapping이 검색한 컨트롤러에게 DispatcherServlet의 명령을 받아 요청에 대한 처리를 시킨다.(invoke)

Controller 

  • 처리된 결과를 ModelAndView객체에 담아서 DispatcherServlet에게 반환한다. 

ViewResolver

  • Controller의 작업 결과를 어떤 View에게 보여줄 것인지를 결정한다. 

View

  • 결과를 화면에 출력하면서 사용자의 요청에 대한 응답을 한다.

'BackEnd > Spring' 카테고리의 다른 글

SpringMVC_게시판_기능정리_국비  (0) 2022.07.15
SpringLegacyProject_SpringSecurity적용하기  (0) 2022.07.12
Spring_Day5_SpringLifeCycle  (0) 2022.07.11
Spring_Transaction_국비_Day89  (0) 2022.07.08
Spring_AOP_국비_Day87  (0) 2022.07.06