티스토리 뷰

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
링크
«   2024/10   »
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
글 보관함