티스토리 뷰
package hello.login.web.session;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
@Slf4j
@RestController
public class SessionInfoController {
@GetMapping("/session-info")
public String sessionInfo(HttpServletRequest request){
HttpSession session = request.getSession(false);
if(session == null){
return "세션이 없습니다.";
}
//세션 데이터 출력
session.getAttributeNames().asIterator()
.forEachRemaining(name -> log.info("session name={},value={}",name,session.getAttribute(name)));
log.info("sessionId={}",session.getId());
log.info("getMaxInactiveInterval={}",session.getMaxInactiveInterval()); //비활성화 시킬 시간
log.info("creationTime={}", new Date(session.getCreationTime())); // 만든 시간
log.info("lastAccessesTime={}", new Date(session.getLastAccessedTime())); //마지막으로 접근한 시간
log.info("isNew={}", session.isNew());
return "세션 출력";
}
}
- sessionId : 세션Id, JSESSIONID 의 값이다. 예) 34B14F008AA3527C9F8ED620EFD7A4E1 maxInactiveInterval : 세션의 유효 시간, 예) 1800초, (30분)
- creationTime : 세션 생성일시
- lastAccessedTime :세션과연결된사용자가최근에서버에접근한시간,클라이언트에서서버로
- sessionId ( JSESSIONID )를 요청한 경우에 갱신된다.
- isNew : 새로 생성된 세션인지, 아니면 이미 과거에 만들어졌고, 클라이언트에서 서버로
- sessionId ( JSESSIONID )를 요청해서 조회된 세션인지 여부
** 실제로 세션을 사용할 때는 모두 메모리이기 때문에 타임아웃은 무조건 필요하다.(사용자가 로그아웃은 안하면 계속 서버에 쌓이게된다.)
** 실무에서 세션안에 vo를 담는 경우 메모리가 너무 낭비되므로 memberid정도만 사용한다.
세션 타임아웃 설정
스프링 부트로 글로벌 설정
application.properties server.servlet.session.timeout=60 : 60초, 기본은 1800(30분)
(글로벌 설정은 분 단위로 설정해야 한다. 60(1분), 120(2분), ...) 특정 세션 단위로 시간 설정
혹은 자바코드에서 session.setMaxInactiveInterval(1800); //1800초
프로퍼티에 넣는 경우 글로벌 설정이기에 매번 페이지를 이동할 때마다 새로 타임아웃 설정이 된다.
'dev_공부일지 > spring boot + intelliJ' 카테고리의 다른 글
인터셉터 1 (1) | 2023.11.22 |
---|---|
필터와 인터셉터 (0) | 2023.06.06 |
session (0) | 2023.06.06 |
Cookie를 이용한 로그인 (1) (0) | 2023.05.27 |
steam() filter() 람다식 사용 (0) | 2023.05.23 |
- Total
- Today
- Yesterday
- filter
- 리터럴
- SpringBoot
- React
- HTTP
- hypertexttransferprotocol
- react실행
- 향해플러스
- thymleaf
- exception
- Java
- 백엔드 개발자 역량
- 로그인
- jpa api
- 컨트
- ArgumentResolver
- 항해99
- 인터셉터
- Intercepter
- 스프링부트
- 스프링공부
- 항해플러스
- 예외처리
- reject
- 향해99
- 백엔드 개발자 공부
- 향해플러스백엔드
- BindingResult
- JPA
- rejectValue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |