
๋งจ ์ฒ์ ์ธ์
๊ณผ ์ฟ ํค๋ผ๋ ๋ณด์ ๊ด๋ จ ์ฉ์ด๋ฅผ ๋ฃ๊ฒ ๋๋ค๋ฉด ๋ญ๊ฐ ์์ฒญ๋ ๊ฒ์ด ์์ ๊ฒ ๊ฐ๋ค๋ ์ฐฉ๊ฐ์ ํ๊ณค ํ๋ค. (๊ฐ์์ธ ๋๋ ๊ทธ๋ฌ..๋ค) ๊ทธ๋ ์ง๋ง ์ธ์
๊ณผ ์ฟ ํค ๋ชจ๋ ํน๋ณํ ๊ฒ์ด ์๋๋ผ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค!
-> ์๋ฐ์์๋ ์ธ์
์ ์ธํฐํ์ด์ค๋ก ๊ตฌํ๋๋ค.(์๋ ์ฌ์ง ์ฐธ์กฐ)

์ผ๋จ ์ธ์ ์ด๋ ํด๋ผ์ด์ธํธ์ ์ธ์ ID์ ํด๋ผ์ด์ธํธ์ ์ผ๋ถ ์ ๋ณด๋ฅผ ๋ด์ ํด๋ผ์ด์ธํธ๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ์๋ฒ์ ์กด์ฌํ๋ ์ ์ฅ์ ๋ผ๊ณ ๋ณผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ธ์ ์ด ์ด๋ป๊ฒ ์๋๋๋ ์ง์ ๋ํ ๋ฐฉ์์ ์ดํด๋ณด๋ฉฐ ์ธ์ ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
๋จผ์ HttpSession์ ๋ด๋ถ ๋งค์๋์ ๋ํด์ ์ดํด๋ณด๊ฒ ์ต๋๋น.
request.getSession(true)
- ์ธ์ ์ด ์์ผ๋ฉด ๊ธฐ์กด ์ธ์ ์ ๋ฐํํ๋ค.
- ์ธ์ ์ด ์์ผ๋ฉด ์๋ก์ด ์ธ์ ์ ์์ฑํด์ ๋ฐํํ๋ค.
request.getSession(false)
- ์ธ์ ์ด ์์ผ๋ฉด ๊ธฐ์กด ์ธ์ ์ ๋ฐํํ๋ค.
- ์ธ์ ์ด ์์ผ๋ฉด ์๋ก์ด ์ธ์ ์ ์์ฑํ์ง ์๋๋ค.
null์ ๋ฐํํ๋ค.
์ธ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฐ์ ธ์ค๋ ํจ์์ด๋ค.
โผ๏ธ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ด ํ ๋ ์ธ์ ์ ์ต์ํ์ ๋ฐ์ดํฐ๋ง์ ๋ณดํด์ผํ๋ค. ๋ณด๊ดํ ๋ฐ์ดํฐ ์ฉ๋ * ์ฌ์ฉ์์ ๋ก ์ธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๊ธ๊ฒฉํ๊ฒ ๋์ด๋์ ์ฅ์ ๋ก ์ด์ด์ง ์ ์๋ค.
//๋ก๊ทธ์ธ ์ฑ๊ณต์ฒ๋ฆฌ
//๋ง์ฝ์ ์ธ์
์ด ์์ผ๋ฉด ์๋ ์ธ์
์ ๋ฐํ, ์์ผ๋ฉด ์ ๊ท ์ธ์
์ ์์ฑ.
HttpSession session = request.getSession();
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
//๋ก๊ทธ์์ ์ฒ๋ฆฌ
//์ธ์
์ด ์๋ก ์์ฑ๋๋ฉด ์๋๊ธฐ ๋๋ฌธ์ 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์ ์ด์ฉํด์ ๊ฐ์ ๋ฃ๊ณ ์ฐพ๊ณ ์๋ค. ์ด๋ป๊ฒ ์ด๊ฒ ๊ฐ๋ฅํ ์ง ๊ถ๊ธํ๋ค.๐ค (๋ณดํต ๋งต์ ์๊ฐํด ๋ณด๋ฉด ํค๊ฐ์ด ์ ๋ํฌ ๊ฐ์ด์ด์ผ ํ๋ค. ๊ทธ๋์ผ ๊ฐ์ ์ฐพ์ ์ ์์ผ๋๊น!)
๊ฐ๋จํ๊ฒ ์ค๋ช ์ ํ์๋ฉด
session์ ์์ฑํ๋ ์๊ธฐ์ sessionId๋ฅผ ๋ฐํํด์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํด ์ค๋ค.
ํด๋ผ์ด์ธํธ๋ ์ด๊ฑธ ๊ฐ์ง๊ณ ์๋ค๊ฐ ์ธ์ฆ์ด ํ์ํ ์๊ฐ์ ์๋ฒ์ ์ ๊ทผํด์ ์๋ฒ๋ ์ด๋ฅผ ํํฐ๋ก ํ์ธ ํ๋ค.
์ด๋ ์ธ์ ์ด ์์ผ๋ฉด ์ธ์ ์ ๋ฐํํด์ ๊ทธ ์ธ์ ์ค SessionConst.LOGIN_MEMBER์ ํค๊ฐ์ ๊ฐ์ง ๊ฐ์ ์ฐพ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ 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());
๋ ๋ค๋ฃจ์ด์ผ ํ ๋ถ๋ถ์ด ๋ง์ด ๋จ์์ง๋ง ๋ค์ํฌ์คํ ์์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.