Today I Learned - 33
JSP - 7
- 세션 (중요!)
- 장바구니 페이지 만들기
- 쿠키
- 주문 처리 페이지 만들기
세션(session) - 1. 개요
- 세션이란,
- 클라이언트와 웹 서버 간의 상태를 지속적으로 유지 하는 것
- 웹 서버에서만 접근 가능 => 보안 유리
- 오직 웹 서버에 존재하는 객체, 웹 브라우저마다 하나씩 => 사용자 구분하는 단위로
- session 내장 객체 메서드
- 세션 속성 이름마다 값 설정, 세션 유지시간 설정, 속성 삭제 등
- 반환형 Object인 메서드는 반드시 형 변환 필요!!
메서드 | 반환형 | 설명 |
---|---|---|
getAttribute() | java.lang.Object | 세션 속성 이름이 name인 속성값을 Object형으로 반환 |
getAttributeNames() | java.util.Enumeration | 세션 속성 이름을 Enumeration 객체 타입으로 반환 |
getId() | java.lang.String | 세션에 할당된 고유 아이디를 String형으로 반환 |
setAttribute(String name, Object value) | void | 세션 속성 name 에 value 값 할당 |
removeAttribute(String name) | void | 세션 속성 name을 제거 |
invalidate() | 현재 세션에 저장된 모든 세션 속성 제거 | |
… | … | … |
세션(session) - 2. 생성
- 세션 사용을 위한 세션 생성
- setAttribute() 메서드 사용
void setAttribute(String name, Object value)
- setAttribute() 메서드 사용
세션(session) - 3. 세션 정보
-
session 내장 객체, getAttribute() / getAttributeNames() 를 통해 세션 정보 확인 가능
-
단일 세션 정보 얻기
- getAttribute() 메서드 사용
- 반환형 Object이므로 반드시 형변환!
- 다중 세션 정보 얻기
- getAttributeNames() 메서드 사용
- 반환형 Enumeration이므로, java.util.Enumeration 임포트 해야 함
세션(session) - 4. 세션 삭제
- 유지할 필요가 없어진 세션
- removeAttribute() 또는 invalidate() 메서드 사용
- 사용 중이던 session 내장 객체 삭제되면서, 저장되어 있던 속성도 모두 삭제됨!
- 단일 세션 삭제
- removeAttribute() 메서드 사용
- ex.
session.removeAttribute("memberId");
- 다중 세션 삭제
- invalidate() 메서드 사용
- ex.
session.invalidate();
세션(session) - 5. 세션 유효 시간 설정
- 세션을 유지하기 위한 일정한 시간
- 브라우저에 마지막 접근한 시간부터, 설정한 시간 이내에 접근이 없다면 자동으로 세션 종료!
- 초 단위로 설정 (기본값 1,800초)
- ex.
session.setMaxInactiveInterval(60 * 60);
쿠키(cookie) - 1. 개요
- 쿠키란,
- 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법 ( = 세션)
- 상태 정보를 웹 서버가 아닌 클라이언트에 저장 ( != 세션)
- 쿠키 동작 과정
- (1) 생성: 최초 웹 브라우저의 요청을 받은 웹 서버에서 생성하여 응답!
- (2) 저장: 응답 데이터에 포함된 쿠키를 웹 브라우저 쿠키 저장소에 저장!
- (3) 전송: 요청이 있을 때마다 저장된 쿠키를 웹 서버에 전송 -> 웹 서버 필요한 작업 수행
이전 접속 여부 / 클라이언트 정보 등 확인 가능
- Cookie 클래스의 메서드
- set/getComment(): 쿠키에 대한 설명을 설정/출력
- set/getDomain(): 쿠키의 유효한 도메인 정보 설정/출력
- set/getMaxAge(): 쿠키의 유효기간을 설정/출력
- set/getValue(): 쿠키의 값을 설정/출력
- 쿠키와 세션의 차이
구분 | 쿠키 | 세션 |
---|---|---|
사용 클래스 | Cookie | HttpSession |
저장 형식 | 텍스트 | Object |
저장 위치 | 클라이언트 | 서버(세션 아이디만 클라이언트에) |
종료 시점 | 쿠키 저장할 때 설정(설정 안하면, 웹브라우저 끌 때) | 정확한 시점 알 수 없음 |
리소스 | 클라이언트 리소스 사용 | 서버 리소스 사용 |
보안 | 클라이언트에 저장되어 상대적으로 취약 | 서버에 저장되어 안정적 |
- 쿠키보다는 세션!
- 첫째, 세션이 보안에 더 강함(서버에 저장)
- 둘째, 쿠키 지원하지 않거나 쿠키를 막은 경우 사용 불가 / 세션은 무관
쿠키(cookie) - 2. 쿠키 생성
- 쿠키 사용을 위해 생성부터 (Cookie 클래스의 Cookie 메서드)
- ex.
Cookie Cookie(String name, String value)
- ex.
- 생성 후에는 response 내장객체의 addCookie() 메서드로 쿠키 설정!
response.addCookie(cookie);
쿠키(cookie) - 3. 쿠키 정보
-
쿠키 정보 조회 = 쿠키 객체를 먼저 얻어온 후, 쿠키 이름/값 가져옴
-
- 쿠키 객체 얻기
- request 내장 객체의 getCookies() 메서드 사용
- 쿠키 객체 여러 개일 때는 배열 형태로 가져옴
- ex.
Cookie[] cookies = request.getCookies();
- 쿠키 객체 얻기
-
- 쿠키 객체의 정보 얻기
- 현재 설정된 쿠키 개수: ex.
cookies.length
- 설정된 쿠키 속성 이름: ex.
cookies[i].getName()
- 설정된 쿠키 속성 값: ex.
cookies[i].getValue()
- 현재 설정된 쿠키 개수: ex.
- 쿠키 객체의 정보 얻기
쿠키(cookie) - 4. 쿠키 삭제
- 쿠키 유효 기간 설정 메서드 사용
- void setMaxAge(int age)
- age = 0 으로 설정하여 쿠키 삭제
Cookie 클래스에 삭제 기능은 따로 없음..
과제
-
13, 14단원 연습문제 / ~7/15(금)까지
-
이형록_220525_JSP과제
-
내용
- 1~3번
- 교재 읽고 답 찾기
- 메모장에 타이핑
- 4~6번
- 교재 읽고 실습
- 기본 소스 임포트 해서 확인
- 7번
- Book Market Mall 만들기 - 정답 소스 없음 (구글에 검색!!)
- 수업용 예제, ‘Web Market Mall’ 참고!
- 1~3번
nice!!!!!!