IT/Java

2021-03-11 일지1

어린이개발자 2021. 3. 11. 16:31

< 스웨거 내용 정리 >

* 스웨거(Swagger)
- Web API 문서화를 위한 도구

* 스웨거 허브 사이트를 이용하면 Web API를 만들지 않더라도 
  Web API를 명세화 + 간단한 테스트 가능
  
* Swagger2를 사용하려면 Docket 객체를 Bean으로 설정해야 함
  Docket 객체에는 어떤 경로의 Web API들을 
  자동으로 문서화 할 것인지에 대한 설정과 문서 설명에 대한 내용이 포함
  
< 상태 유지 기술 내용 정리 >

* 웹에서의 상태 유지 기술
- HTTP 프로토콜은 상태 유지가 되지 않는 프로토콜
  > 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않음
  > 웹브라우저(클라이언트)의 요청에 대한 응답을 하고 나면
    해당 클라이언트와의 연결을 지속하지 않음
- 상태 유지를 위해 Cookie와 Session 기술이 등장함

* 쿠키(Cookie)와 세션(Session)
- 쿠키
  > 사용자 컴퓨터에 저장
  > 저장된 정보를 다른 사람 또는 시스템이 볼 수 있는 단점
  > 유효시간이 지나면 사라짐
- 세션
  > 서버에 저장
  > 서버가 종료되거나 유효시간이 지나면 사라짐

 

* 쿠키
- 정의
  > 클라이언트 단에 저장되는 작은 정보의 단위
  > 클라이언트에서 생성하고 저장될 수 있고, 
    서버단에서 전송한 쿠키가 클라이언트에 저장될 수 있음
- 이용 방법
  > 서버에서 클라이언트의 브라우저로 전송되어 사용자의 컴퓨터에 저장
  > 저장된 쿠키는 다시 해당하는 웹페이지에 접속할 때,
    브라우저에서 서버로 쿠키를 전송
  > 쿠키는 이름(name)과 값(value)으로 구성된 자료를 저장
    이름과 값 외에도 주석, 경로, 유효기간, 버전, 도메인 등 추가적인 정보 저장
- 쿠키는 그 수와 크키에 제한
  > 하나의 쿠키는 4K Byte 크기로 제한
  > 브라우저는 각각의 웹사이트당 20개의 쿠키를 허용
  > 모든 웹사이트를 합쳐 최대 300개를 허용
  > 그러므로 클라이언트 당 쿠키의 최대 용량은 1.2M Byte

 

* javax.servlet.http.Cookie

- 서버에서 쿠키 생성, Response의 addCookie 메소드를 이용해 클라이언트에게 전송
- 클라이언트가 보낸 쿠키 정보 읽기
  > 쿠키 값이 없으면 null 반환
- Cookie가 가지고 있는 getName()과 getValue() 메소드를 이용해서
  원하는 쿠키정보를 찾아 사용
- 클라이언트에게 쿠키 삭제 요청
  > 쿠키를 삭제하는 명령은 없고, maxAge가 0인 같은 이름의 쿠키 전송
  > 쿠키의 유효시간 설정: 메소드 setMaxAge() 활용

 

* Spring MVC에서의 Cookie 사용
- @CookieValue 어노테이션 사용
  > 컨트롤러 메소드의 파라미터에서 CookieValue 어노테이션을 사용함으로써
    원하는 쿠키 정보를 파라미터 변수에 담아 사용할 수 있음
- 컨트롤러 메소드(@CookieValue(value="쿠키이름", required=false,
  defaultValue="기본값") String 변수명)

 

* 세션
- 정의
  > 클라이언트 별로 서버에 저장되는 정보
- 이용 방법
  > 웹 클라이언트가 서버측에 요청을 보내게 되면 서버는 

     클라이언트를 식별하는 session id를 생성
  > 서버는 session id를 이용해서 key와 value를 이용한 저장소인 HttpSession을 생성
  > 서버는 session id를 저장하고 있는 쿠키를 생성하여 클라이언트에 전송
  > 클라이언트는 서버측에 요청을 보낼 때 session id를 가지고 있는 쿠키를 전송
  > 서버는 쿠키에 있는 session id를 이용해서 그 전 요청에서 생성한 HttpSession을 찾고 사용

* 세션 생성 및 얻기
- HttpSession session = request.getSession(true);
  > request의 getSession() 메소드는 서버에 생성된 세션이 있따면 세션을 반환하고
    없다면 새롭게 세션을 생성하여 반환
새롭게 생성된 세션인지는 HttpSession이 가지고 있는 isNew() 메소드를 통해 알 수 있음
- HttpSession session = request.getSession(false);
  > request의 getSession() 메소드에 파라미터로 false를 전달하면,
    이미 생성된 세션이 있다면 반환하고 없으면 null 반환

* 세션에 값 저장
- setAttribute(String name, Object value)
  > name과 value의 쌍으로 객체 Object를 저장하는 메소드
  > 세션이 유지되는 동안 저장할 자료를 저장
  
* 세션에 값 조회
- getAttribute(String name) 메소드
  > 세션에 저장된 자료는 다시 getAttribute(String name) 메소드를 이용해 조회
  > 반환 값은 Object 유형이므로 저장된 객체로 자료유형 변환이 필요
  
* 세션에 값 삭제
- removeAttribute(String name) 메소드
  > name 값에 해당하는 세션 정보를 삭제
- invalidate() 메소드
  > 모든 세션 정보를 삭제

'IT > Java' 카테고리의 다른 글

[Quartz] Quartz 스케줄러 적용의 건  (0) 2023.01.13
2021-03-13 일지1  (0) 2021.03.13
2021-03-10 일지3  (0) 2021.03.10
2021-03-10 일지2  (0) 2021.03.10
2021-03-10 일지1  (0) 2021.03.10