작업중: In progress 태그: Dev, 백엔드프로그래밍, 웹&모바일, 자바프로그래밍기초 학습일: 02/22/2023
브라우저의 첫방문 → 쿠키가 없다 → HTTPSession (세션ID=쿠키) 생성
Cookie : 웹서버가 웹브라우저에게 보내는 부가정보
& 웹브라우저가 관리
& 웹서버 방문 시 제출
eg. 코스트코 멤버쉽 카드 & 회원 번호
-
세션ID는 cookie기술을 이용하여 주고 받는다
⇒ 웹브라우저가 쿠키를 허용하지 않으면 세션ID를 주고받을 수 없다
cf
Connection-Oriented
ㄴ stateful
ㄴ stateless
Connectionless
[Web Browser : Client] → [Servlet Container : Server] → [DBMS]
- 클라이언트의 첫 요청
- 서버에서 세션 생성
- 세션→서버의 세션ID 부여 ← 응답헤더에 포함 “쿠키생성”
- 클라이언트에 응답 & 보관 : 쿠키 기술
- 추후 클라이언트의 요청에 세션ID포함 ← 요청헤더에 포함 “쿠키읽기”
- 서버는 전달된 세션ID로 세션에서 찾아 사용
cf. 첫 요청이 아닐 경우
- 요청 프로토콜에 세션 ID가 있다
1-1) 유효하다 : 찾은 세션 전달 & 세션 ID는 전달되지 않는다
1-2) 유효하지 않다 : 2) 수행
- 없다 ⇒ 새 객체 생성해서 세션 ID전달
- 쿠키 생성
응답 프로토콜에 이름=값 형태로 하나씩 전달한다
유효기간을 설정하지 않으면 웹브라우저가 종료될 때 까지 유지된다
- 쿠키 보관
세션ID는 웹브라우저 메모리에 보관된다
한 마디로, 웹브라우저를 종료하면 쿠키 정보가 삭제 ⇒ 세션ID가 삭제된다
- 쿠키 읽기
요청 프로토콜에 이름으로 한 개씩 추출하지 않고 한 번에 배열로 받는다
요청 헤더에 쿠키가 한 개라도 없으면 null이 리턴된다
📍 웹브라우저나 tab들이 몇 개 더라도 하나의 쿠키테이블을 공유한다 ⇒ 쿠키 테이블을 공유하는 모든 웹브라우저가 닫혀야 쿠키가 무효화된다cf. 사생활보호모드(private)의 경우 공유하지 않는다
sendRedirect()
: 웹 브라우저에게 전달하는 URL이 들어간다
브라우저일 경우, 서버root로 생각 후 상대경로 설정한다
contextroot 가 아니다
setMaxAge()
: 쿠키 보존시간 지정
seconds 기준 / negative나 0을 할 경우 삭제된다
cf.
-
조건에 따라 출력되는 브라우저가 달라진다
⇒ 동적 JSP 활용 (.html ⇒ .jsp로 변경)
-
기재된 순서대로 찾고 실행한다
-
web.xml
$contextroot/*.hml, *.css, *.js, *.gif 등 정적자원
/*.jsp 동적자원 /WEB-ING class/*.class, *.properties, *.xml 등
lib/ *.jar
web.xml
⇒ web application 설정정보를 담은 파일ㄴ 자원배치정보 서블릿/JSP, 필터, 리스너, 파라미터 등
Deployment Descriptor 파일 (DD파일)
-
게시글 작성자의 번호 저장하는 컬럼 추가
-
Refresh vs Redirect
response.sendRedirect("../auth/form");
response.setHeader("Refresh", "1; url=../auth/form");
Refresh : 브라우저의 요청 → 서버의 응답 (콘텐트 포함) → 브라우저의 콘텐트 출력
Redirect : 브라우저의 요청 → 서버의 응답 (콘텐트 미포함) → 브라우저가 콘텐트 미출력
로그인 사용자 정보는 무조건 서버쪽에서
- 필터를 이용한 로그인 여부 검사