[Servlet][국비교육] Day 61

Ga02·2023년 3월 28일

국비교육

목록 보기
57/82

🔍 MVC 패턴의 각 계층(Layer) 요약

계층 ➡ Spring에서 사용하는 것

  • Controller Layer 👉🏻 Presentation Layer

    • 사용자의 입력처리 ➡
    • 보여질 화면(View)를 선택 ⬅

      일반적으로 화면 컨트롤을 View에게 맡기지만, 하는 경우도 있음
      서비스 쪽으로 사용자의 입력처리 넘기기

  • Service Layer 👉🏻 Business Layer
    데이터의 가공 / 처리

    • 주로 DB 데이터에 대한 추가 작업 ➡
    • DAO처리 결과인 단순 데이터(가공 안한 얻어와진 그대로)를 프로그램에서 쓸모있는 정보로 변경하는 작업을 수행⬅
  • Dao Layer 👉🏻 Data Access(DB) Layer

    • DB 접속 및 DB 데이터에 대한 CRUD 작업 ➡
    • DB 데이터를 가공하지 않고 데이터 원본을 유지해야 함(결과 집합)

      추가작업 금지! 추가작업하면 Service의 역할을 침범

  • View Layer 👉🏻 Presentation Layer / 보편적으로 화면 담당
    보여질 화면을 구성

    • 프로그램의 기능 수행 결과(Service 처리 결과)를 사용자에게 보여줌⬅
  • DTO 컴포넌트

👀 Example
사용자가 게시판의 9번 페이지를 클릭한다
👉🏻 웹 서버는 게시글 전체 목록 중에서 9번째 페이지에 대한 응답을 전달


[사용자의 URL 입력]
9 페이지 링크 클릭 ➡ 쿼리스트링으로 9를 전달

[Controller]
사용자의 입력값으로 전달된 9 값을 받아들임
URL 주소는 Controller에 연결(매핑)되어있음 ➡ 쿼리스트링으로 포함된 전달값을 분석
9번 페이지에 대한 게시글 목록을 가공할 수 있도록 Service객체의 메소드를 호출

[Service]
DB조회할 때 필요한 데이터를 가공
8839 ~ 8888 값을 매개변수로 이용하여 Dao 객체의 메소드를 호출
총 게시글 수 : 9288
한 페이지에 보여질 게시글 수 : 50
9 페이지에 보여질 게시글 수 : 8888 ~ 8839

페이지게시글 번호
1페이지9288 ~ 9239
2페이지9238 ~ 9189
3페이지9188 ~ 9139
4페이지9138 ~ 9089
5페이지9088 ~ 9039
6페이지9038 ~ 8989
7페이지8988 ~ 8939
8페이지8938 ~ 8889
9페이지8888 ~ 8839

dao.selectOage(conn, start, end);
Board start - new Board(8839, null, ..);
list.add(start);
list.add(end);
..(conn, list);
map.put("start", 8839);
map.out("end", 8888);
현재 제일 편한 방법은 int형 2개 보내기 but, 나중에 수정이나 상황을 감안하면 DTO가 좋을 수도

[Dao]
Service에서 전달받은 8839, 8888번 구간의 게시글을 조회한다
조회 결과 리스트 전달

[Service]
조회결과 리스트 전달(리턴)

[Controller]
조회 결과를 포함하여 View를 선택하고 전달

[View]
조회결과를 가지고 화면을 구성
웹에서는 주로 HTML 코드로 화면을 구성
화면(HTML 텍스트)이 클라이언트에게 응답됨


🔍 서블릿, Servlet

Servlet = Server + Applet 👉🏻 서버에서 동작하는 애플릿 프로그램이라는 뜻

  • 애플릿, Applet : 특정 프로그램이나, 환경에서 동작하는 플러그인 형태로 개발된 소형 프로그램
    • 웹 브라우저같은 프로그램이 실행되고 그 프로그램의 도움으로 코드가 실행됨
  • 자바 애플릿, Java Applet : 자바 언어로 만들어진 애플릿
    • 바이트코드 형태로 배포됨
    • JVM만 존재한다면 어떤 플랫폼에서든지 자바 애플릿을 실행할 수 있음
  • 서블릿은 JVM이 포함되어있는 웹 서버에서 실행되는 자바 프로그램 👉🏻 Aphache Tomcat

➰ 서블릿 스펙, Servlet spec, servlet Specification

웹 어플리케이션을 개발하기 위한 자바의 Servlet기술에 대한 명세

  • 자바 웹 개발 분야 API에 대한 종합적인 설명 ➡ tomcat - Server RunTime 안에 포함되- 어 있음
  • 버전으로 관리함 👉🏻 Apache Tomcat 9.0버전에는 서블릿 스펙 4.0을 지원
  • 톰캣 서버는 자바 웹 개발에 필요한 서블릿 API, JSP API를 포함

➰ 서블릿 클래스, Servlet Class

  • 서블릿 스펙에 맞춰 개발된 자바 클래스를 뜻함
  • javax.servlet.http.HttpServlet 클래스를 상속받아 구현
    ✔ 서블릿 스펙 5.0부터는 jakarta.servlet.http.HttpServlet 👉🏻 서블릿 스펙 5.0 (Topcat 10) 이상부터 패키지가 바뀌었음(자바 서블릿이 아닌 자카르타 서블릿)
  • 서블릿 클래스를 줄여서 서블릿 이라고도 부름
  • 웹 MVC패턴에서 Controller 역할을 담당

꼭 써야하는 대표 API를 몇개 두기 -> 구현할 때 상속


🔍 웹 서버에서 클라이언트에게 배포되는 자원들

클라이언트가 웹 서버에 요청할 수 있게 준비된 자원

➰ 정적 자원, Static Resource

실제 파일들 👉🏻 HTML, CSS, JS, image, ...

  • src/main/webapp 폴더에 보관
  • 서버의 정적자원의 위치를 URL로 /(Root Directory)로 설정하고 있음
  • 이클립스의 프로젝트 파일이 서버에 원본 파일 그대로 배포가 됨
  • 클라이언트의 웹 요청에 의해서 자원(파일)을 그대로 응답하는 형식

➰ 동적 자원, Dynamic Resource

실행 가능한 프로그램 자원 👉🏻 자바 코드로 작성된 서블릿 클래스(.class 파일)

  • src/main/java 폴더에 보관
  • 서버에 컴파일된 바이트코드가 동적 자원으로 배포됨
  • 동적 자원의 위치를 URL로 매핑해서 설정
  • web.xml 파일의 설정항목으로 url-pattern을 지정
  • 클라이언트의 웹 요청에 의해서 자원(프로그램)을 실행시키고 그 결과를 응답하는 형식

🔍 Web Server

정적 컨텐츠(자원)에 대한 응답을 담당

  • 클라이언트의 HTTP요청에 대한 응답으로 정적 자원(주로 HTML) 반환하는 시스템
  • HTML, CSS, JS, image, font, file 등의 정적 컨텐츠를 관리

➰ WAS, Web Application Server

동적 컨텐츠(자원)에 대한 응답을 담당

  • 웹 서버와 웹 컨테이너를 결합한 시스템
    웹 컨테이너, Web Container : 웹 서버가 전달한 URL을 동적 자원(프로그램)을 이용하려 처리할 수 있도록 준비된 시스템
    Servlet/JSP, PHP, ASP 같은 동적 웹 페이지를 해석하는 역할도 수행

    웹 서버가 URL을 받고 웹 컨테이너에게 줌 / 웹 컨테이너가 자기가 갖고 잇는 자원을 매핑된게 있나 찾아보고 있으면 웹 서버에게 리턴해줌
    클라이언트는 항상 정적(최종 결과물)만 받게 됨


** 요구사항 확인 평가

  • 평가자 체크리스트
  • 서술형

[UML]
유스케이스 다이어그램 작성법 -> 평가자 체크리스트 / jpg 파일로 제출
클래스 다이어그램
ERD
시퀀스 다이어그램

profile
IT꿈나무 댓츠미

0개의 댓글