๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Lect & Tip/Java & Spring

Spring session method ์„ธ์…˜ ๋ฉ”์†Œ๋“œ .setAttribute() .getAttribute() .invalidate() .setMaxInactiveInterval() .isNew()

by ๋‚ฏ์„ ๊ณต๊ฐ„2019 2023. 8. 1.

๋ชฉ์ฐจ

    ์„ธ์…˜ ๋ฉ”์†Œ๋“œ: Session Method

    ์„œ๋ก 

    ์›น ๊ฐœ๋ฐœ์—์„œ ์„ธ์…˜์€ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์œ ์ง€ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์„ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ •๋ณด, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์—ญ ๋“ฑ์„ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ์œ ์ง€ํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java์—์„œ๋Š” ์„ธ์…˜์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์—์„œ๋Š” Java์˜ ์„ธ์…˜ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ์„ธ์…˜ ๋ฉ”์†Œ๋“œ ์†Œ๊ฐœ

    Java์—์„œ ์„ธ์…˜์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์ฃผ์š”ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    setAttribute(String name, Object value)

    ์ด ๋ฉ”์†Œ๋“œ๋Š” ์„ธ์…˜์— ์ง€์ •๋œ ์ด๋ฆ„์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์„ค์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์€ ์ด๋ฆ„-๊ฐ’ ์Œ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ, ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์„ธ์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์ด 'John'์ด๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    session.setAttribute("username", "John");

    getAttribute(String name)

    ์ด ๋ฉ”์†Œ๋“œ๋Š” ์„ธ์…˜์—์„œ ์ง€์ •ํ•œ ์ด๋ฆ„์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. setAttribute() ๋ฉ”์†Œ๋“œ๋กœ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์—์„œ ์ €์žฅํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    String username = (String) session.getAttribute("username");

    invalidate()

    ์ด ๋ฉ”์†Œ๋“œ๋Š” ์„ธ์…˜์„ ๋น„์šฐ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•  ๋•Œ๋‚˜ ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    session.invalidate();

    setMaxInactiveInterval(int interval)

    ์ด ๋ฉ”์†Œ๋“œ๋Š” ์„ธ์…˜์˜ ํƒ€์ž„์•„์›ƒ์„ ์ •์ˆ˜(์ดˆ)๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์€ ์ผ์ • ์‹œ๊ฐ„ ๋’ค์— ์ž๋™์œผ๋กœ ๋งŒ๋ฃŒ๋˜๋Š”๋ฐ, ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„ธ์…˜์„ 1์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    session.setMaxInactiveInterval(3600); // 3600์ดˆ = 1์‹œ๊ฐ„

    isNew()

    ์ด ๋ฉ”์†Œ๋“œ๋Š” ์„ธ์…˜์ด ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์„ธ์…˜์ด๋ผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ด๋ฏธ ์‚ฌ์šฉ๋œ ์„ธ์…˜์ด๋ผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์ ์ด ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    boolean isNewSession = session.isNew();

    ์ƒ์„ธ ์„ค๋ช…

    ์„ธ์…˜ ๋ฉ”์†Œ๋“œ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ ๋ฉ”์†Œ๋“œ๋“ค์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    setAttribute(String name, Object value)

    ์„ธ์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์€ setAttribute() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” ์„ธ์…˜์— ์ง€์ •๋œ ์ด๋ฆ„์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์€ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ, ์ด๋ฆ„์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์œ ํ•œ ํ‚ค(Key) ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์„ธ์…˜์— ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    String username = "John";
    session.setAttribute("username", username);

    ์œ„์˜ ์ฝ”๋“œ์—์„œ "username"์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ธ "John"์ด ์„ธ์…˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ํ•ด๋‹น ์„ธ์…˜์— ์†ํ•œ ๋ชจ๋“  ํŽ˜์ด์ง€๋‚˜ ์„œ๋ธ”๋ฆฟ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    getAttribute(String name)

    ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” getAttribute() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” ์ง€์ •ํ•œ ์ด๋ฆ„์˜ ๊ฐ์ฒด๋ฅผ ์„ธ์…˜์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ getAttribute() ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ Object ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋กœ ํ˜•๋ณ€ํ™˜(Casting)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์—์„œ ์ €์žฅํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    String storedUsername = (String) session.getAttribute("username");

    ์œ„์˜ ์ฝ”๋“œ์—์„œ๋Š” Object ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ String์œผ๋กœ ํ˜•๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด storedUsername ๋ณ€์ˆ˜์— "John"์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

    invalidate()

    ์„ธ์…˜์„ ๋น„์šฐ๋Š” ๊ฒƒ์€ ๋กœ๊ทธ์•„์›ƒ์ด๋‚˜ ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•œ ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค. invalidate() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ˜„์žฌ ์„ธ์…˜์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ณ , ์„ธ์…˜์€ ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    session.invalidate();

    ์œ„์˜ ์ฝ”๋“œ๋Š” ํ˜„์žฌ ์„ธ์…˜์„ ๋น„์šฐ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ƒ์„ฑ๋˜์–ด์•ผ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    setMaxInactiveInterval(int interval)

    ์„ธ์…˜์€ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ž๋™์œผ๋กœ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Java์—์„œ๋Š” ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ์ด 30๋ถ„์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ setMaxInactiveInterval() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํƒ€์ž„์•„์›ƒ ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” ์ธ์ž๋กœ ์ •์ˆ˜(์ดˆ ๋‹จ์œ„)๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์„ธ์…˜์„ 1์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    session.setMaxInactiveInterval(3600); // 3600์ดˆ = 1์‹œ๊ฐ„

    ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ธ์…˜์€ 1์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€๋˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ 1์‹œ๊ฐ„ ๋™์•ˆ ์„œ๋ฒ„์™€ ์ƒํ˜ธ ์ž‘์šฉ์ด ์—†๋‹ค๋ฉด ์„ธ์…˜์ด ์ž๋™์œผ๋กœ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

    isNew()

    isNew() ๋ฉ”์†Œ๋“œ๋Š” ์„ธ์…˜์ด ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์„ธ์…˜์ด๋ผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ด๋ฏธ ์‚ฌ์šฉ๋œ ์„ธ์…˜์ด๋ผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    boolean isNewSession = session.isNew();

    ์œ„์˜ ์ฝ”๋“œ์—์„œ isNewSession ๋ณ€์ˆ˜๋Š” ์„ธ์…˜์ด ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์ ์ด ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์š”์•ฝ

    ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Java์—์„œ ์ œ๊ณตํ•˜๋Š” ์„ธ์…˜ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์„ธ์…˜์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. setAttribute(), getAttribute() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ธ์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ invalidate() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ์…˜์„ ๋น„์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, setMaxInactiveInterval() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ธ์…˜์˜ ํƒ€์ž„์•„์›ƒ ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ isNew() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์„ธ์…˜์ด ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

    ์„ธ์…˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•จ์œผ๋กœ์จ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java์—์„œ ์ œ๊ณตํ•˜๋Š” ์„ธ์…˜ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ž˜ ํ™œ์šฉํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณด๋‹ค ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ์ฐธ๊ณ  ์ž๋ฃŒ

    ์˜ˆ์ œ

    ๋‹ค์Œ์€ ๋กœ๊ทธ์ธ ํผ์„ ์ œ์ถœํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์„ธ์…˜์— ์ €์žฅํ•˜๊ณ , ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

    // ๋กœ๊ทธ์ธ ํผ์„ ์ œ์ถœํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์„ธ์…˜์— ์ €์žฅํ•˜๋Š” ์„œ๋ธ”๋ฆฟ
    @WebServlet("/login")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String username = request.getParameter("username");
    
            // ์„ธ์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ (์ƒˆ ์„ธ์…˜ ์ƒ์„ฑ ๊ฐ€๋Šฅ)
            HttpSession session = request.getSession(true);
    
            // ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์„ธ์…˜์— ์ €์žฅ
            session.setAttribute("username", username);
    
            // ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
            response.sendRedirect("welcome.jsp");
        }
    }
    
    // ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ์„ธ์…˜์— ์ €์žฅ๋œ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์„œ๋ธ”๋ฆฟ
    @WebServlet("/welcome")
    public class WelcomeServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // ์„ธ์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ (๊ธฐ์กด ์„ธ์…˜ ์‚ฌ์šฉ)
            HttpSession session = request.getSession(false);
    
            // ์„ธ์…˜์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
            String username = (String) session.getAttribute("username");
    
            // ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ํ™”๋ฉด์— ์ถœ๋ ฅ
            response.getWriter().println("Welcome, " + username + "!");
        }
    }

    ์ด ์˜ˆ์ œ์—์„œ๋Š” ๋กœ๊ทธ์ธ ํผ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„ ์„ธ์…˜์— ์ €์žฅํ•˜๊ณ , ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๋ถˆ๋Ÿฌ์™€์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•  ๋•Œ๋Š” invalidate() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์„ธ์…˜์„ ๋น„์›Œ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€