Spring 2일 11/24

권준석·2022년 11월 28일
0

세션과 쿠키

Http프로토콜 환경클라이언트가 응답 받으면 연결을 끊어버리는특성과
통신이 끝나면 상태를 유지하 지 않는 특성을 갖는다
때문에 서버에서는 클라이언트가 누군지 매번 확인해야한다
이러한 약점을 보완하기위해 세션과 쿠키를 사용한다

세션

쿠키를 기반으로 사용자 정보를 서버 측에서 관리한다

  • 클라이언트를 구분하기위 해 세션 ID를 부여
  • 웹브라우저 종료할때까지 인증상태를 유지한다
  • 접속시간에 제안을 둬 일정 시간동안 응답이없으면 정보가 유지 되지 않게 설정가능
  • 쿠키보다 보안에 좋지만 사용자가 많을 수록 서머 메모리를 많이 차지하게 된다
  • 동접자가 많으면 서버에 과부화를 주게되 성능저하의 요인이 된다

쿠키

클라이언트 로컬에 저장되는 키와 값이들어있는 작은 데이터 파일

  • 사용자 인증 유효기간을 명시 할 수있다
  • 유효기간이 정해지면 블라우저가 종료되어도 인증을 유지한다
  • 클라리언트의 상태 정보를 로컬에 저장했다가 참조한다

차이점

  • 저장되는 위치가 다르다 (쿠키 :클라이언트 로컬, 세션 : 서버)
  • 보안의 차이(세션은 서버에 저장되어 보안이 좀 더 우수)
  • 요청 속도의 차이 (쿠기가 좀 더 빠르다 세션은 서버의 처리가 필요하기 때문에)
  • 라이프 사이클의 차이 ( 쿠키는 만료시간을 넉넉히 잡으면 쿠키 삭제 까지 유지가능, 세션은 브라우저가 종료되면 만료시간에 상관없이 삭제)

HTTP프로토콜 환경에서 작업
그중 MVC방식으로 작업하고
Spring 프레임워크를 사용한다
DI (객체의 의존성)
객체가 필요할때 new연산자로 객채를 만드는 것이 아닌 spring컨테이너에 있는
객체의 주소를 주입 받는다

컨테이너에 객채를 등록하는법
spring의 설정 파일로 객체를 생성하고 컨파일에 등록시킨다
spring설정 파일은 xml파일로 정의 할 수 있고 java파일로도 정의할 수 있다

spring 컴파일하면서 xml파일에 설정된 파일을 통해 컨테이너에 객체를 만든다

Spring에서는 기본적으로 싱글톤을 지원하고 설정에 따라서 싱글톤을 지원하지 않게 할 수 있다

sprong을 사용하는것은

협업 대규모 프로젝트

컨트롤러 -> DAO -> 요청 : 이 구조 가능
컨트롤러가 작업을 요청한다, 만약 요청할 작업이 많아질수록 컨트톨러는 해야할게 많아진다

컨트롤러 -> 서비스 -> DAO : 이 구조로 작성을 많이 한다
컨트롤러가 서비스에게 작업을 요청한다, 서비스는 알아서 요청을 처리한다
컨트롤러는 요청할 작업에서 자유로워지고 서비스가 처리한 결과면 응답받으면된다

============각 layer별 개발 기술==========

서비스 layer도 개발자가 마음대로 구현해도 되나 스프링에서는 인터페이스로 구현하도록한다
그래서 관련 객체도 스프링에서 관리한다

DAO layer은 mybatis에서 개발한다
mybatis에서는 인터페이스로 DAO를 작성하도록한다

인터페이스 설명하고자 하면
추상클래스, static(공용), finel(상수) 이를 정의 하고 다른 클래스에서 구현받아서 사용한다
구현받은 클래스는 인터페이스의 추상클래스는 반드시 오버라이드해야한다

인터페이스 자료형의 변수는 구현 받은 모든 클래스의 객체의 주소값을 가진다(다형성) - 의존성을 낮추기 위해 사용
인터페이스 변수로 구현받은 객체의 메서드에 접근 가능하다
객체가 다르지고 그기능도 다르지만 메서드 하나로 서로다른 기능을 수행 시킬수 있다

추가적인 작업을 할떄
최대한 기존의 소스를 건들지 않고 만든다 (컨트롤러의 변경을 최소화한다)

스프링에서 인터페이스를 구현 받은 객체로 만들어 준다 여기서 기억해야 할 것은 잡아에서 인터페이스를
여러개의 클래스가 구현할수있지만 스프링에서는인터페이스 한개의 클래스만 구현 받을 수 있다

=====================================================

profile
ㅇㅇ

0개의 댓글