2020-12-04

jsbak·2020년 12월 4일
0

주말사이에 Maven 충분히 숙련해두기

기본객체들의 스코프 영역은 지역변수에 해당한다.

세션은 통로 , 연결하는 통로를 의미하는데
웹에서는 http는 비연결지향이기 때문에 모호하다 그래서 웹에서는 시작에서부터 종료될때까지를 세션으로 본다 이 시작과 종료를 어떻게 볼지 생각해봐야한다.

세션의 트래킹 모드
이 세션을 어떻게 식별하고 저장하고 보내는지

set-Cookie로 header에 포함해서 나간다.
(사람이 하나여도 브라우저가 여러개면 그 브라우저당 하나씩 부여된다)

멜론? 비로그인? 재생목록? 부하 분산을 위해서 클라이언트에 쿠키를 남겨둔다.
단점 :
1. 마샬링, 직렬화 (요청을 받은쪽 역직렬화, 언마샬링)
2. 데이터의 사이즈가 일정 부분이하로 제한되어있다.
3. 쿠키가 클라이언트에 있는 것 언제든지 지울수 있다. 누구나 열어 볼수 있 다. 보안에 취약하다.

그래서 쿠키라는 트래킹 모드도 이 단점을 고스란히 가지고 있다.

제일 안전한 종료는 invailidate처리
그래서 나머지 종료 이벤트를 써야했던것
timeout,브라우저 종료(반드시 그런것은 아니다. timeout과 같다), 쿠키삭제

세션과 쿠키의 개념이 중요해서 기술 면접에 종종 등장하니 잘 정의해두자

SCOPE(영역)

page Scope

  • pageContext 가 관리하는 맵
  • 한 페이지내에서만 공유되는 영역.

request Scope

  • request 가 관리하는 Map<String,Object>
  • request와 생명주기 동일

session Scope

  • session 가 관리하는 Map<String,Object>
  • session 와 생명주기 동일
  • 브라우저별 하나씩, 사람별 하나씩
  • 1명의 사람이 브라우저별 1개의 세션을 가진다. 또한 브라우저 2개면 세션 1명이 2개의 세션을 가질수 있다.
  • 한사람의 유저가 자신만의 데이터를 넣기 위한 영역

application Scope

부하를 신경써야한다. 그래서 속성데이터를 지워야할 수도 있다.

  • 공유범위가 제일넓다
  • application 가 관리하는 Map<String,Object>
  • application 와 생명주기 동일

공유데이터맵 SCOPE영역의 차이점을 이야기하라 반드시 생명주기를 논한다.

??

  1. BTS 멤버 인원을 클라이언트에게 제공
  2. 멤버 선택시 해당 멤버의 페이지 제공

모델 2 적용한 인원 제공페이지
form 데이터 전송시 브라우저에 걸려있는 서블릿 페이지로 전송된다.

  1. 서블릿생성
  2. 멤버 맵 생성
  3. jsp에 데이터 공유
  4. 서브밋 없으니 이벤트 처리로 넣어야한다.

멤버 이름
멤버 페이지 주소
멤버 식별코드

객체 생성에 관한 패턴으로 빌더를 알아보자

java bean

VO(ValueObject), DTO(DataTransferObject), MODEL
한가지 객체의 상태를 담기 위한녀석

  1. 상태정보를 온전히 가지고 있어야한다
    -> 프로퍼티가 있어야한다.
  2. 정의된 프로퍼티를 아무나 수정하면 안된다.
    적절한 캡슐화
  3. 정해진 원칙에 따라 캡슐화된 프로퍼티에 접근
    정해진 인터페이스가 있어야함 getter/setter
  4. 객체와 객체사이의 상태를 비교(equals오버라이딩)
  5. 객체 상태 확인(toString)
  6. 객체 상태 기록(직렬화)
  • BEAN : 위의 6가지를 약속하는 녀석
    자바빈 : 규약에 따라 정의된 재사용 가능한 객체

builder

  • private 묶여있는 전체 생성자
    • 내안에서 나를 만들어 줄수 있는 녀석 builder를 InnerClass로 정의 반드시 빌더에는 build() 메서드가 존재해야하며 최종적으로 빌더로 생성해야한다.
  • builder안에 빌드의 대상에 되는 객체 BtsVO와 똑같은 상태가 있어야한다.
  • set역할을 하는 것처럼 현재의 이름과 같은 상태의 메서드를 정의
  • builder의 리턴값은 빌더, 메서드의 체인구조가 완성(jquery 처럼)

과제 및 정리

정리

자바빈 이해, Scope를 어디에 써야하는지 이해

과제 1. Model2 구조로 web

탐색기 로컬 파일, 저기서 서버파일을 탐색기 구현해보기, 비동기 요청으로, 파일 복사, 이동, Control + 이동시 복사, treeUI : fancytree(https://github.com/mar10/fancytree)

treeUI : fancytree(https://github.com/mar10/fancytree)

이 API 활용해볼것

과제 2. 로그인 페이지수정

회원 가입 페이지도 만들어주기
이메일, 이름, 패스워드
모델 방식 제한 없음, 최대한 많이 써보자

인메모리 DB
레이어드 아키텍처(DAO, 저장 위치가 인메모리 DB)

과제 3. Thread-safe한 싱글턴?

getInstance()가 두개 이상의 쓰레드에서
두번 불려진다면 더 이상 싱글턴이 아니게 된다.
동기화를 해서 락을 걸더라고 인스턴스 생성이 오래걸리는데 생성하는 쓰레드가 아닌 다른 쓰레드에서 생성하는 동안 접근을 할 수 있다 그러면 getInstance()를 다시 부르게 되는데 이렇게 되면 싱글턴 객체가 하나가 아닌 두개가 되게 된다.

검색어 : multi thread singleton
참고1 : https://medium.com/@joongwon/multi-thread-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C%EC%9D%98-%EC%98%AC%EB%B0%94%EB%A5%B8-singleton-578d9511fd42

참고2 : https://ciwhiz.tistory.com/284

과제 4 : 래퍼패턴 어댑터 패턴 조사하기

1과제가 수월해 질것이다.

왜 데이터맵으로 만드는가

profile
끄적끄적 쓰는곳

0개의 댓글