1. ์ธ์ ์ด๋?
Session์ ์๋ก ๊ด๋ จ๋ HTTP ํธ๋ ์ ์ ์ ์๋ฒ๊ฐ ๊ตฌ๋ณํ ์ ์๋๋ก ํ๋ฐ ๋ฌถ์ด ๋๋ ๊ฒ์ ๋งํ๋ค.
ํ๋์ ๋ธ๋ผ์ฐ์ ์ ๋์ํ๋ ์ธ์ ๊ฐ์ฒด(์ ์ฅ์)๋ ํ๋์ด๋ค. (1๋1 ๋์)
(๋ค๋ฅธ PC์์ ๋์จ ๋ธ๋ผ์ฐ์ , ํ PC์์๋ ์๋ก ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ผ๋ฉด ์ธ์ ID๊ฐ ์๋ก ๋ค๋ฅด๋ค.)
(HTTPํธ๋ ์ ์ - ์์ฒญ๊ณผ ์๋ต ํ ์ธํธ๋ฅผ ๋งํจ.
์์ฒญ๋ค์ ์๋ก ๋ ๋ฆฝ์ ์ด๋ผ, ์ธ์ ์ด๋ ์ฟ ํค๊ฐ ์์ผ๋ฉด ์๋ฒ๋ ํด๋น ์์ฒญ์ด ๊ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ์ ์จ ๊ฒ์ธ์ง ์๋์ง ๊ตฌ๋ณํ์ง ๋ชปํ๋ค.)
์ธ์ ์ ์๋ฒ์ ๊ฐ์ฒด๋ก์ ์กด์ฌํ๊ณ , ์๋ก ์ฐ๊ด๋ ์์ฒญ๋ค์ ํ๋๋ก ๋ฌถ๊ธฐ ์ํด ์ฟ ํค๋ฅผ ์ด์ฉํ๋ค.
2. ์ธ์ ์ด ๋์๊ฐ๋ ๊ณผ์ .
(1) ์ธ์ ์ ์์ฑ
๋ธ๋ผ์ฐ์ ์์ ์ฒซ ๋ฒ์งธ ์์ฒญ์ด ์ค๋ ์๊ฐ, ์๋ฒ์์๋ ํด๋น ์์ฒญ์ ๋ํ ์ธ์ ์ ๋ง๋ ๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฒญ์ ๋ํ ์๋ต์ ํ ๋, ์๋ต ๋ฉ์ธ์ง Header์ ์ธ์ ID๊ฐ ์ ํ ์ฟ ํค๋ฅผ ๋ณด๋ธ๋ค.
(2) ์ธ์ ID๋ฅผ ์ด์ฉํด ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ,์๋ต์ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ .
๋ ๋ฒ์งธ ์์ฒญ๋ถํฐ๋ ์์ฒญ ๋ฉ์ธ์ง์ Header์ ์๊น ์ ์ด๋ณด๋ธ ์ธ์ ID๊ฐ ์ ํ ์ฟ ํค๊ฐ ์จ์ ธ์๋ค.
์๋ฒ๋ ์ด ์ธ์ ID๋ฅผ ๋ณด๊ณ , ์ด๋ ๋ธ๋ผ์ฐ์ ์์ ์จ ์์ฒญ์ด๊ณ , ์ด๋ค ๋ค๋ฅธ ์์ฒญ์ด๋ ์๋ต๊ณผ ์ฐ๊ด๋์ด ์๋์ง ๊ตฌ๋ณํ ์ ์๋ค. (์ด๊ฑด ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋์ํ๋ ์ธ์ ์ด ์ ์ผ๋ฌด์ดํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ค.)
์๋ฒ๋ ๊ฐ์ ์ธ์ ID๋ฅผ ๊ฐ์ง ์์ฒญ์ด๋ ์๋ต์ ์๋ก ์ฐ๊ด๋์ด ์๋ ๊ฒ์ผ๋ก ๋ฌถ์ด ์๊ฐํ ์ ์๋ค.
์ด๋ ๊ฐ์ ์ธ์ ID๋ฅผ ๊ฐ์ง ์์ฒญ๋ค์ ํด๋น ์ธ์ ID๋ฅผ ๊ฐ์ง ์ธ์ ์ ๋๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. ์์์ 2,3๋ฒ ์์ฒญ๋ค์ ๋ชจ๋ Session #2F460A๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค.
** ์ปจํธ๋กค๋ฌ์์ ์ธ์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฌ๋ค ์ฐ๋ ๋ฐฉ๋ฒ**
// ์ปจํธ๋กค๋ฌ์์ ์ธ์
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฌ๊ธฐ๋ค๊ฐ ์ด๋ฏธ ์ฒซ ์์ฒญ์ ์ํด ๋ง๋ค์ด์ง ์ธ์
๊ฐ์ฒด๋ฅผ ๋งตํ
/* requst ๊ฐ์ฒด์์ ์ธ์
๊ฐ์ฒด๋ฅผ ์ฐพ์ ์ ์๋ ์ด์
request ์์ฒญ์ Header์ ์ธ์
ID๊ฐ ๋ญ์ง ์ ํ ์์ผ๋ฏ๋ก,
์ฐ๋ฆฌ๋ request์ ์ ํ ์ด Session ID๋ฅผ ์ด์ฉํด ํด๋น ์์ฒญ์ ์จ์ผํ ์ธ์
๊ฐ์ฒด๋ฅผ ์ฐพ์ ์ ์๋ค.
*/
HTTPSession session = request.getSession();
//ํด๋น ์ธ์
๊ฐ์ฒด์ ๊ฐ ์ง์ด๋ฃ๊ธฐ.
session.setAttribute("id","asdf");
(3) ์ธ์ ์ ์ข ๋ฃ
์ข ๋ฃ์๋ ์๋์ข ๋ฃ์ ์๋์ข ๋ฃ๊ฐ ์๋ค.
a. ์๋์ข ๋ฃ: ์ปจํธ๋กค๋ฌ์์ ๋งค์๋ ํธ์ถํด์ ์ธ์ ์ ์ข ๋ฃ์์ผ๋ฒ๋ฆผ.
// ์ด๋ฏธ ์กด์ฌํ๋ ์ธ์
๊ฐ์ฒด๋ฅผ ๋งตํ
HttpSession session = request.getSession();
session.invalidate(); // 1. ์ธ์
์ ์ฆ์ ์ข
๋ฃ
session.setMaxInacitveInterval(30*60); // 2. ์์ฝ ์ข
๋ฃ(ํด๋น ๋งค์๋๋ ์ด ๋จ์, ๋ฐ๋ผ์ 30๋ถ ๋ค ์ข
๋ฃ)
b. ์๋์ข ๋ฃ: web ์ค์ ์ ๋ด๋นํ๋ web.xml์ ์ด์ด session์ ์๋ช ์ ์ค์ ํ๋ค.
๊ทธ๋ฌ๋ฉด ์๋ช ์ด ๋ค ๋๋ฉด ์ด๋ค session์ด๋ ์๋ ์ข ๋ฃ๊ฐ ๋๋ค.
<session-config>
<session-timeout> 30 </session-timeout>
</session-config>
<!--์ด ๋
์์ ๋ถ ๋จ์-->
c. ์ธ์ ์ด ์ข ๋ฃ๋๋ฉด?
์ธ์ ์ด ์ข ๋ฃ๋๋ฉด, ๊ทธ ๋ค์ ์์ฒญ๋ถํฐ๋ ์ฒซ ์์ฒญ์ผ๋ก ๊ฐ์ฃผ๋์ด ์๋ก์ด ์ธ์ ์ด ์์ฑ๋๋ค.
ํด๋น ์์ฒญ์ ๋ํ ์๋ต ์ , ์๋ต header์๋ ์๋ก ์์ฑ๋ ์ธ์ ์ id๊ฐ ์ฟ ํค๋ก ์ ํ๋ค.
3. ์ธ์ ๊ณผ ์ฟ ํค ๋น๊ต
์ข ๋ฅ | ์ฟ ํค | ์ธ์ |
์ ์ฅ ์์น | ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ | ์๋ฒ์ ์ ์ฅ |
์๋ฒ์ ๋ถ๋ด ์ฃผ๋์ง? | ์๋ฒ์ ๋ถ๋ดx (์ ์ฅ ์์ฒด๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋๋ฏ๋ก, ์ฉ๋์ผ๋ก ์๋ฒ์ ๋ถ๋ด์ ์ฃผ์ง ์๋๋ค.) |
์๋ฒ์ ๋ถ๋ด O (์ธ์ ์ ํด๋ผ์ด์ธํธ๋ง๋ค ๋ง๋ค์ด์ง๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ๋์ด๋ ์๋ก ์๋ฒ์ ๊ณ์ ์์ฑ๋์ด ์ ์ฅ๋จ. ์ฉ๋์ด ๋์ด๋ ์๋ก ์๋ฒ์ ๋ถ๋ด์ด๋ค.) |
๋ณด์ | ๋ณด์์ ๋ถ๋ฆฌ(๊ทธ๋์ ์ธ์ฝ๋ฉ ํ๋ ๊ฐ) | ๋ณด์์ ์ ๋ฆฌ (์๋ฒ๋ ๋ณด์์ด ์ฒ ์ !) |
์๋ฒ ๋ค์คํ์ ์ ๋ฆฌ? | ๋ค์คํ์ ์ ๋ฆฌ ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ์์ ๋จ. ๋ฐ๋ผ์ ์๋ฒ๊ฐ ๋์ด๋๋ ๋ง๋ ์๊ด์ด ์์. ๋ฐ๋ผ์ ์๋ฒ ๊ท๋ชจ๊ฐ ํฐ ์ฌ์ดํธ์์๋ ์ฟ ํค๋ฅผ ์ ์ฉํจ. |
๋ค์คํ์ ๋ถ๋ฆฌ ์๋ฅผ ๋ค์ด A ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ID ์ ๋ณด๋ฅผ ์ ์ฅํ ์ธ์ ์ด ์๋ค๊ณ ์น์. ํด๋น ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ์ ์ ํ์ ๋, B ์๋ฒ๊ฐ ์ฐ๋๋๋ฉด, B ์๋ฒ์ ์ธ์ ์๋ ํด๋ผ์ด์ธํธ์ ID ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก, ๋ก๊ทธ์ธ์ด ์๋์ด ์๋ค๊ณ ๋ฐ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ค๋ฅ๋ฅผ ์์ ๊ธฐ ์ํด์๋ ์๋ฒ๋ง๋ค ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๊ฐ ๊ฐ๋๋ก ์๋ฒ ๋๊ธฐํ ์์ ์ ํด์ค์ผ ํ๋ค. ์๋ฒ๊ฐ ๋ค์คํ ๋ ์๋ก ์ธ์ ๋์ ๋๊ธฐํ ์์ ์ด ๋ง์์ง๋ฏ๋ก, ์ธ์ ์ ์๋ฒ ๋ค์คํ์ ๋ถ๋ฆฌํ๋ค. |
** ์๋ฒ ๋ค์คํ
ํ๋์ ๊ธฐ๋ณธ ์๋ฒ๊ฐ ์กด์ฌํ๊ณ , ๊ทธ ๊ธฐ๋ณธ ์๋ฒ๋๋ง ์ฐ๊ฒฐ๋์ด ์๋ ๋ค์์ ์๋ฒ๋ค์ด ์กด์ฌํ๋ค.
๊ธฐ๋ณธ ์๋ฒ๋ก ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฉด, ๊ธฐ๋ณธ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์๋ฒ๋คํํ ๊ณจ๊ณ ๋ฃจ ๋๋ ์ค๋ค.
ํ์ง๋ง, ๊ธฐ๋ณธ ์๋ฒ๋ฅผ ์ ์ธํ ๋ค๋ฅธ ์๋ฒ๋ค ๊ฐ์๋ ์ฐ๊ฒฐ์ด ๋์ด์์ง ์์ผ๋ฏ๋ก, ์๋ฒ๋ค ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๋ ์๋๋ค.
4. ๋ธ๋ผ์ฐ์ ์ค์ ์ผ๋ก ์ฟ ํค ์ฐจ๋จ ์, ์๋ฒ๋ ์ด๋ป๊ฒ ์์ฒญ๋ค์ด ๊ฐ์ ๋ธ๋ผ์ฐ์ ์์ ์๋์ง ๊ตฌ๋ณํ ๊น?
์ด๋ ๊ฒ ์ฐจ๋จ ํด๋๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ ๊ณ์ ๋ณด๋ด๋, ์ฟ ํค๋ก session id๊ฐ ์ ์ฅ๋์ง ์๋๋ค.
์ด๋ ์๋ฒ์์ ์ธ์ id ๋ฅผ ์ ๋ณด๋ธ ๊ฒ์ด ์๋๋ผ, ์ธ์ id๋ ๊ณ์ ๋ณด๋ด๋๋ฐ, ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐจ๋จํ๊ณ ์ ๋ฐ๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๋ก๊ทธ์ธ ํด๋, ๋ก๊ทธ์ธ ํ ํ ์ ์๋ ํ๋์ ๋ชปํ ๊ฒ์ด๋ค. ์๋ํ๋ฉด, ์ฐ๊ด๋ ์์ฒญ๋ผ๋ฆฌ ์๋ก ๋ฌถ์ด ๊ฐ์ฃผํ ์ ์๊ฒ ํด์ฃผ๋ session id๋ฅผ ๋ชป ์ฐ๊ฒ ๋์ด์, ์๋ฒ๊ฐ ์์ฒญ๋ค์ ๋ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์น ํ์ด์ง๋ ์ ๋์๊ฐ๋ค. ์ ๊ทธ๋ด๊น?
์๋ํ๋ฉด, ์ฐ๋ฆฌ๊ฐ JSP ๋ฌธ์์์ ์ผ๋ C ํ๊ทธ ์ค C:url์ด๋ผ๋ ํ๊ทธ๊ฐ URL ๋ค์ Session ID๋ฅผ ์๋์ผ๋ก ๋ถ์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฒ๋ URL ๋ค์ ๋ถ์ ์ธ์ ์์ด๋๋ฅผ ํตํด ์์ฒญ์ด ๋ค์ด์ฌ ๋ ์ด๋ค ๋ธ๋ผ์ฐ์ ์์ ์จ ๊ฒ์ธ์ง ๊ตฌ๋ถํ ์ ์๋ค.
๋ก๊ทธ์ธ ํ ํ ํํ์ด์ง์์ GET์ผ๋ก ๊ฐ ์ ์๋ ์ด๋ ๋งํฌ๊ฑด ๋ค์ ์ธ์ ์์ด๋๊ฐ ๋ถ์ด ์์์ JSP ๋ฌธ์๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
์ด๋ C ํ๊ทธ ๋์ด๋ค.
C ํ๊ทธ๋ฅผ ์ ์ฐ๊ณ form action ์ URL์ ํ๋ ์ฝ๋ฉ ํ๋ฉด, URL ๋ค์ ์๋์ผ๋ก Session ID๊ฐ ๋ถ์ง ์๋๋ค.
ํ๋ ์ฝ๋ฉํ ๊ฒฝ์ฐ์ ์ฟ ํค ์ฐจ๋จํด๋ฒ๋ฆฌ๋ฉด, ์์ฒญ์ ๋ณด๋ผ ๋ ๋ง๋ค ์๋ต ๋ฉ์ธ์ง์ ๋ค๋ฅธ ์ธ์ ์์ด๋๊ฐ ์จ๋ค.
์ด์ ๋ ์๋ฒ๊ฐ ์ค๋ ์์ฒญ๋ค์ด ๊ฐ์ ํด๋ผ์ด์ธํธ์์ ์จ๋ค๋ ๊ฑธ ๋ถ๊ฐํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ์ค๋ ์์ฒญ๋ค์ ์ ๋ถ ์ฒซ ๋ฒ์งธ ์์ฒญ์ผ๋ก ๊ฐ์ฃผํ๊ณ ์์ฒญ๋ง๋ค ์ธ์ ์ ์์ฑํด๋ฒ๋ฆฐ ๊ฒ์ด๋ค.
C:url ํ๊ทธ ์ฐ๋ ์๋ฒ๋ ์ฒซ๋ฒ ์งธ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก URL ๋ค์๋ ์ธ์ ์์ด๋๋ฅผ ๋ถ์ด๊ณ ์๋ต ๋ฉ์ธ์ง ์ฟ ํค๋ก๋ ์ธ์ ์์ด๋๋ฅผ ๋ณด๋ธ๋ค. ์ด์ ๋ ํด๋น ๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค๋ฅผ ์ฐจ๋จํ๋์ง ์๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฝ ํด๋น ๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค๋ฅผ ์ ์ฅํ๊ณ , ์์ฒญ ๋ฉ์ธ์ง์ ์ฟ ํค๋ฅผ ๊ฐ์ด ๋ณด๋ธ๋ค๋ฉด, ์๋ฒ๋ C:url ํ๊ทธ์ URL ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ ๋ ์ด์ ์ฐ์ง ์๋๋ค.