Servlet / JSP ) 16. 기업형 레이어로 분리

60jong·2022년 7월 8일
0

Servlet / JSP

목록 보기
16/17

Server 공부 흐름

Servlet --HTML코드 출력 문제--> JSP --스파게티 코드 문제--> [JSP MVC] -> Spring MVC -> SpringBoot



먼저, 우리가 코드 구조를 바꿔 온 흐름을 다시 살펴보자.

  • Servlet을 통한 웹 프로그래밍
  • 동적 페이지 구현을 위한 Servlet (HTML코드 출력 문제)
  • Jasper를 이용한 jsp페이지로 동적 페이지 구현
  • 코드 블럭을 이용한 복잡한 로직의 jsp페이지 (스파게티 코드 문제)
  • JSP MVC model | Model, View, Controller로 분리
    • model1 : 코드 블럭을 입력 코드 - 출력 코드로 분리해서 관리
    • model2 : 입력 코드를 담당했던 부분을 jsp파일에서 떼어내 Controller라는 Servlet으로 관리


기업형 레이어란?


사실 Servlet만으로도 웹 프로그래밍이 가능하다. 그런데 코드 구조가 변해온 이유는 공통적으로

유지 보수 및 관리 때문이다.

혼자서 개발을 한다면 Servlet으로만 개발해도 크게 상관이 없지만, 협업이 필수인 개발 프로젝트에서는 조금 더 구조를 세분화해서 업무를 나누는 것이 필요하다.


이렇게 Servlet에서 비즈니스 로직을 담당하는 부분을 따로 분리하는 방식이다.

  • 복잡한 비즈니스 로직을 잘 아는 사람이 업무 서비스 개발을 담당하게 하는 것이다.


더 나아가서는 업무 서비스에서 DBMS에 접근하여 데이터를 가져오는 부분도 분리할 수 있다. 이 부분을
DAO (Data Access Object) 라고 부른다.


정리하면,
DAO를 통해 DBMS에 접근하여 데이터를 담은 객체를 만들고 (entity) , 이를 이용해 비즈니스 로직을
처리해서 출력 값을 담은 model을 만든 뒤, 이를 jsp파일에 출력해서 문서를 출력하는 방식

현재 작업 중인 프로젝트를 DAO를 service단과 합쳐서 개발해보겠다.


Service 함수

/notice/list에서 필요한 service 함수를 찾아보자.

이 화면을 보면 필요한 비즈니스 로직이

  1. 공지 리스트
    1.1 그냥 공지 리스트 출력 -> getNoticeList()
    1.2 페이지에 따른 공지 리스트 출력 -> getNoticeList(int page)
    1.3 검색에 다른 공지 리스트 출력 -> getNoticeList(String field, String query, int page)
  1. 페이지 출력
    2.1 전체 페이지 수 출력 -> getNoticeCount()
    2.2 검색에 따른 전체 페이지 수 출력 0> getNoticeCount(String field, String query)



/notice/detail에서는

  1. 자체적인 Notice 객체에 대한 내용 출력 -> getNotice(int id)
  1. 다음 / 이전의 notice 제목 출력 -> getPrevNotice(int id) / getNextNotice(int id)

가 존재한다.

profile
울릉도에 별장 짓고 싶다

0개의 댓글