MVC, Session, Cookie

최지홍·2022년 3월 24일
0

매일 공부

목록 보기
29/40

웹 아키텍처 - MVC

  • JSP로 구성할 수 있는 아키텍처: Model 1, Model 2
  • Model 1: 로직과 디자인을 모두 jsp가 처리
    • 요청이 들어오면 자바 빈즈나 서비스 클래스를 이용하여 작업 처리
    • 구조가 단순하며 직관적 / 개발 시간이 짧아 비용 감소
    • 출력을 위한 view(html) 코드와 로직 처리를 위한 java 코드가 섞여 있어 복잡함
    • jsp 코드 때문에 백엔드와 프론트가 혼재
    • 유지보수가 어렵고, 새로운 기술과 프레임워크 적용이 어려움
  • Model 2: 로직은 자바가 처리하고, 디자인은 jsp가 담당
    • 요청 처리는 servlet(controller), 로직 처리는 java(service, dao 등). 출력은 jsp
    • Service, Dao, Java Beans: Model
      • Logic(Business Logic, DB Logic)을 처리
      • Controller로부터 넘어온 데이터를 이용하여 작업을 처리하고 다시 Controller에게 리턴
    • JSP: View
      • 모든 화면 처리를 담당
    • Servlet: Controller
      • 요청을 분석하여 로직 처리를 위한 Model 호출
      • 데이터를 저장하고 redirect 혹은 forward 하여 View 호출
    • 출력을 위한 코드와 로직 처리를 위한 코드가 분리되어 jsp가 간결해짐
    • 분업이 용이해지고 유지 보수가 쉬워졌으며 확장성이 뛰어남
    • 구조가 복잡하여 초기 진입이 어렵고 개발 시간의 증가로 비용 증가
  • DTO, VO: 자바 빈의 형식을 따름
  • 자바 빈: 자바로 작성된 소프트웨어 컴포넌트
    • 직렬화 되야함
    • 기본 생성자 가져야함
    • Getter/Setter
    • 이벤트 처리 메서드 포함
  • HTTP Protocol
    • client → server 요청
    • server → client 응답
    • 응답 후 연결을 해제함
      • 지속적인 연결로 인한 자원 낭비 방지
    • 연결이 해제돼도 유지해야할 정보들을 위해 세션과 쿠키 사용
  • 서버에서 사용자의 컴퓨터에 저장
  • 사용자가 별도의 요청을 하지 않아도 브라우저는 request 시 request header를 넣어 서버에 전송
  • Key와 Value로 구성되고 String 형태
  • 브라우저마다 저장되는 쿠키가 다름(구분자 존재)
  • 주요 목적
    • 세션 관리: 사용자 아이디, 접속시간, 장바구니 등 서버가 알아야 할 정보 저장
    • 개인화: 사용자마다 페이지 개인화
    • 트래킹: 사용자의 행동과 패턴 분석, 기록
  • 사용 예시
    • ID 저장(자동로그인)
    • 하루간 광고 끄기
    • 상품 추천
    • 장바구니
  • 구성요소
    • 이름: 각 쿠키를 구별하기 위해 사용되는 이름
    • 값: 쿠키의 이름과 매핑되는 값
    • 유효기간: 쿠키 유효기간
    • 도메인: 쿠키를 전송할 도메인
    • 경로: 쿠키를 사용할 수 있는 영역(전송할 요청 경로)
  • 클라이언트가 페이지를 요청하면 WAS는 쿠키를 생성하여 HTTP Header에 쿠키를 넣어 응답한다.
  • 브라우저는 받은 쿠키를 로컬에 저장하고 다음번 요청 때 요청과 함께 보낸다.
  • 브라우저가 종료되어도 쿠키 유효기간이 남아있으면 계속 보관된다.
  • 클라이언트에 총 300개의 쿠키를 저장할 수 있고, 하나의 도메인 당 20개의 쿠키를 가질 수 있다.
  • 하나의 쿠키는 4KB까지 저장 가능

Session

  • 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로
  • 서버의 메모리에 Object로 저장
  • 서버 메모리 용량의 허용치까지 저장 가능
  • 사용 예시
    • 사이트 내 화면을 이동해도 로그인 유지
    • 장바구니
  • 클라이언트가 페이지를 요청하면 서버는 클라이언트의 요청 헤더에 있는 쿠키를 확인하여 세션 ID를 보냈는지 확인한다.
  • 세션 ID가 없으면 서버는 새 세션을 생성해 클라이언트에게 돌려준다.
  • 서버에서 돌려준 세션 ID를 쿠키를 사용해 클라이언트에 저장한다.
  • 클라이언트는 재접속 시 쿠키를 이용해 세션 ID 값을 서버에 전달한다.
  • 특징
    • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
    • 웹 서버에 저장되는 쿠키
    • 브라우저를 닫거나 서버에서 세션을 삭제했을 때만 삭제되므로 보안이 좋음
    • 저장 데이터에 제한이 없다.
    • 각 클라이언트 별 고유 세션 ID를 부여한다.
profile
백엔드 개발자가 되자!

0개의 댓글