๐Ÿฅ”๊ฐ์ž๋„ ์ดํ•ดํ•˜๋Š” ์„ธ์…˜

Twoweekheeยท2024๋…„ 6์›” 3์ผ

์„ธ์…˜ ๊ทธ๊ฒŒ ๋ญ์ฃ ? ๋จน๋Š” ๊ฑด๊ฐ€?

๋งจ ์ฒ˜์Œ ์„ธ์…˜๊ณผ ์ฟ ํ‚ค๋ผ๋Š” ๋ณด์•ˆ ๊ด€๋ จ ์šฉ์–ด๋ฅผ ๋“ฃ๊ฒŒ ๋œ๋‹ค๋ฉด ๋ญ”๊ฐ€ ์—„์ฒญ๋‚œ ๊ฒƒ์ด ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ฐฉ๊ฐ์„ ํ•˜๊ณค ํ•œ๋‹ค. (๊ฐ์ž์ธ ๋‚˜๋„ ๊ทธ๋žฌ..๋‹ค) ๊ทธ๋ ‡์ง€๋งŒ ์„ธ์…˜๊ณผ ์ฟ ํ‚ค ๋ชจ๋‘ ํŠน๋ณ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค!
-> ์ž๋ฐ”์—์„œ๋Š” ์„ธ์…˜์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„๋œ๋‹ค.(์•„๋ž˜ ์‚ฌ์ง„ ์ฐธ์กฐ)

์ผ๋‹จ ์„ธ์…˜์ด๋ž€ ํด๋ผ์ด์–ธํŠธ์˜ ์„ธ์…˜ ID์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ๋‹ด์•„ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋Š” ์„œ๋ฒ„์— ์กด์žฌํ•˜๋Š” ์ €์žฅ์†Œ ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์„ธ์…˜์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™๋˜๋Š” ์ง€์— ๋Œ€ํ•œ ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๋ฉฐ ์„ธ์…˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

๋จผ์ € HttpSession์˜ ๋‚ด๋ถ€ ๋งค์„œ๋“œ์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹น.

.getSession()

request.getSession(true)

  • ์„ธ์…˜์ด ์žˆ์œผ๋ฉด ๊ธฐ์กด ์„ธ์…˜์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์„ธ์…˜์ด ์—†์œผ๋ฉด ์ƒˆ๋กœ์šด ์„ธ์…˜์„ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

request.getSession(false)

  • ์„ธ์…˜์ด ์žˆ์œผ๋ฉด ๊ธฐ์กด ์„ธ์…˜์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์„ธ์…˜์ด ์—†์œผ๋ฉด ์ƒˆ๋กœ์šด ์„ธ์…˜์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • null ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

.setAttribute(), .getAttribute()

์„ธ์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜์ด๋‹ค.

โ€ผ๏ธ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ ํ•  ๋•Œ ์„ธ์…˜์— ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ๋ณดํ•ด์•ผํ•œ๋‹ค. ๋ณด๊ด€ํ•œ ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰ * ์‚ฌ์šฉ์ž์ˆ˜ ๋กœ ์„ธ์…˜๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋Š˜์–ด๋‚˜์„œ ์žฅ์• ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

//๋กœ๊ทธ์ธ ์„ฑ๊ณต์ฒ˜๋ฆฌ
//๋งŒ์•ฝ์— ์„ธ์…˜์ด ์žˆ์œผ๋ฉด ์žˆ๋Š” ์„ธ์…˜์„ ๋ฐ˜ํ™˜, ์—†์œผ๋ฉด ์‹ ๊ทœ ์„ธ์…˜์„ ์ƒ์„ฑ.

  HttpSession session = request.getSession();
  session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
  • SessionConst.LOGIN_MEMBER = ์ŠคํŠธ๋ง ๊ฐ’
//๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ
//์„ธ์…˜์ด ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— false
 HttpSession session = request.getSession(false);
 if (session != null) {
            session.invalidate();
        }

session.invalidate ๋Š” session storage์—์„œ session์ด ์‚ญ์ œ ๋œ๋‹ค.

์„ธ์…˜ ์ž‘๋™ ์›๋ฆฌ

โ‰๏ธ์—ฌ๊ธฐ์„œ ๋“œ๋Š” ์˜๋ฌธ!

//์„ธ์…˜์— ๋กœ๊ทธ์ธ ํšŒ์› ์ •๋ณด ๋ณด๊ด€
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);

//์„ธ์…˜์— ๋กœ๊ทธ์ธ ํšŒ์› ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
Member loginMember = (Member)session.getAttribute(SessionConst.LOGIN_MEMBER);

์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๋“ ์ง€ ๊ฐ„์— SessionConst.LOGIN_MEMBER์„ ์ด์šฉํ•ด์„œ ๊ฐ’์„ ๋„ฃ๊ณ  ์ฐพ๊ณ  ์žˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ์ง€ ๊ถ๊ธˆํ–ˆ๋‹ค.๐Ÿค” (๋ณดํ†ต ๋งต์„ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ํ‚ค๊ฐ’์ด ์œ ๋‹ˆํฌ ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ!)

๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…์„ ํ•˜์ž๋ฉด

  1. session์„ ์ƒ์„ฑํ•˜๋Š” ์‹œ๊ธฐ์— sessionId๋ฅผ ๋ฐ˜ํ™˜ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ด ์ค€๋‹ค.

  2. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๊ฑธ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ์ธ์ฆ์ด ํ•„์š”ํ•œ ์ˆœ๊ฐ„์— ์„œ๋ฒ„์— ์ ‘๊ทผํ•ด์„œ ์„œ๋ฒ„๋Š” ์ด๋ฅผ ํ•„ํ„ฐ๋กœ ํ™•์ธ ํ•œ๋‹ค.

  3. ์ด๋•Œ ์„ธ์…˜์ด ์žˆ์œผ๋ฉด ์„ธ์…˜์„ ๋ฐ˜ํ™˜ํ•ด์„œ ๊ทธ ์„ธ์…˜ ์ค‘ SessionConst.LOGIN_MEMBER์˜ ํ‚ค๊ฐ’์„ ๊ฐ€์ง„ ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.

  4. ๊ทธ๋ž˜์„œ session.getAttribute(SessionConst.LOGIN_MEMBER); ์ด ๋ถ€๋ถ„์ด Member๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

์„ธ์…˜ ์ •๋ณด ํ™•์ธ ํ•˜๊ธฐ

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์„ธ์…˜์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

//์„ธ์…˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
session.getAttributeNames().asIterator()
.forEachRemaining(name -> log.info("session name={},
value={}", name, session.getAttribute(name)));

log.info("sessionId={}", session.getId());
log.info("maxInactiveInterval={}", session.getMaxInactiveInterval());
log.info("creationTime={}", new Date(session.getCreationTime()));
log.info("lastAccessedTime={}", new Date(session.getLastAccessedTime()));
log.info("isNew={}", session.isNew());

๋” ๋‹ค๋ฃจ์–ด์•ผ ํ•  ๋ถ€๋ถ„์ด ๋งŽ์ด ๋‚จ์•˜์ง€๋งŒ ๋‹ค์Œํฌ์ŠคํŒ…์—์„œ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

profile
๊ฐœ๋ฐœํ•˜๋Š” ๊ฐ์ž, ์ด์„ธ์ƒ ๊ฐ์ž ๋ชจ์—ฌ๋ผ~

0๊ฐœ์˜ ๋Œ“๊ธ€