Back End Cookie & HttpSession - swkim0128/PARA GitHub Wiki
http protocol์ ํน์ง
client๊ฐ server์ ์์ฒญ.
server๋ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ ํ clinet์ ์๋ต.
์๋ต ํ ์ฐ๊ฒฐ์ ํด์ >> stateless
- ์ง์์ ์ธ ์ฐ๊ฒฐ๋ก ์ธํ ์์ ๋ญ๋น๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฐ๊ฒฐ์ ํด์ ํ๋ค.
- ๊ทธ๋ฌ๋ clinet์ server๊ฐ ์ฐ๊ฒฐ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์(๋ก๊ทธ์ธ์ ๋ณด๋ฑ)
- ์ฆ client ๋จ์๋ก ์์ธ ์ ๋ณด๋ฅผ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ Cookie์ Session์ด ์ฌ์ฉ๋๋ค.
HTTP protocol์ ํน์ง(์ฝ์ )์ ๋ณด์ํ๊ธฐ ์ํด ์ฌ์ฉ
Cookie? : javax.servlet.http.Cookie
- ์๋ฒ์์ ์ฌ์ฉ์์ ์ปดํจํฐ์ ์ ์ฅํ๋ ์ ๋ณดํ์ผ.
- ์ฌ์ฉ์๊ฐ ๋ณ๋์ ์์ฒญ์ํ์ง ์์๋ ๋ธ๋ผ์ฐ์ ๋ request์ request Header๋ฅผ ๋ฃ์ด ์๋์ผ๋ก ์๋ฒ์ ์ ์ก
- key์ value๋ก ๊ตฌ์ฑ๋๊ณ String ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์.
- Browser๋ง๋ค ์ ์ฅ๋๋ ์ฟ ํค๋ ๋ค๋ฅด๋ค(์๋ฒ์์๋ Browser๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์๋ก ์ธ์)
Cookie์ ์ฌ์ฉ ๋ชฉ์
- ์ธ์ ๊ด๋ฆฌ : ์ฌ์ฉ์ ์์ด๋, ์ ์์๊ฐ, ์ฅ๋ฐ๊ตฌ๋ ๋ฑ์ ์๋ฒ๊ฐ ์์์ผ ํ ์ ๋ณด ์ ์ฅ.
- ๊ฐ์ธํ : ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅด๊ฒ ๊ทธ ์ฌ๋์ ์ ์ ํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ์ ์๋ค.
- ํธ๋ํน : ์ฌ์ฉ์์ ํ๋๊ณผ ํจํด์ ๋ถ์ํ๊ณ ๊ธฐ๋ก
Cookie์ ์ฌ์ฉ ์.
- id ์ ์ฅ(์๋ ๋ก๊ทธ์ธ).
- ์ผ์ฃผ์ผ๊ฐ ๋ค์ ๋ณด์ง ์๊ธฐ.
- ์ต๊ทผ ๊ฒ์ํ ์ํ๋ค์ ๊ด๊ณ ์ ์ถ์ฒ.
- ์ผํ๋ชฐ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ.
Cookie์ ๊ตฌ์ฑ์์.
- ์ด๋ฆ : ์ฌ๋ฌ ๊ฐ์ ์ฟ ํค๊ฐ client์ ์ปดํจํฐ์ ์ ์ฅ๋๋ฏ๋ก ๊ฐ ์ฟ ํค๋ฅผ ๊ตฌ๋ณํ๋๋ฐ ์ฌ์ฉ๋๋ ์ด๋ฆ
- ๊ฐ : ํฌํค์ ์ด๋ฆ๊ณผ ๋งคํ๋๋ ๊ฐ
- ์ ํจ๊ธฐ๊ฐ : ์ฟ ํค์ ์ ํจ๊ธฐ๊ฐ
- ๋๋ฉ์ธ : ์ฟ ํค๋ฅผ ์ ์กํ ๋๋ฉ์ธ
- ๊ฒฝ๋ก(path) : ์ฟ ํค๋ฅผ ์ ์กํ ์์ฒญ ๊ฒฝ๋ก
Cookie์ ๋์ ์์
- Client๊ฐ ํ์ด์ง๋ฅผ ์์ฒญ.
- WAS๋ Cookie๋ฅผ ์์ฑ
- HTTP Header์ Cookie๋ฅผ ๋ฃ์ด ์๋ต
- Browser๋ ๋๊ฒจ๋ฐ์ Cookie๋ฅผ PC์ ์ ์ฅํ๊ณ , ๋ค์ WAS๊ฐ ์์ฒญํ ๋ ์์ฒญ๊ณผ ํจ๊ป Cookie๋ฅผ ์ ์ก
- Browser๊ฐ ์ข ๋ฃ๋์ด๋ Cookie์ ๋ง๋ฃ ๊ธฐ๊ฐ์ด ๋จ์ ์๋ค๋ฉด Client๋ ๊ณ์ ๋ณด๊ด
- ๋์ผ ์ฌ์ดํธ ์ฌ๋ฐฉ๋ฌธ์ Client์ PC์ ํด๋น Cookie๊ฐ ์๋ ๊ฒฝ์ฐ, ์์ฒญ ํ์ด์ง์ ํจ๊ป Cookie๋ฅผ ์ ์ก.
Cookie์ ํน์ง
- ์ด๋ฆ, ๊ฐ, ๋ง๋ฃ์ผ(์ ์ฅ ๊ธฐ๊ฐ ์ค์ ), ๊ฒฝ๋ก ์ ๋ณด๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ํด๋ผ์ด์ธํธ์ ์ด 300๊ฐ์ ์ฟ ํค๋ฅผ ์ ์ฅํ ์ ์๋ค.
- ํ๋์ ๋๋ฉ์ธ ๋น 20๊ฐ์ ์ฟ ํค๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ํ๋์ ์ฟ ํค๋ 4KB๊น์ง ์ ์ฅ ๊ฐ๋ฅํ๋ค.
Cookie์ ์ค์ .
- name์ด userid์ธ Cookie์ ๊ฐ์ ssafy์ด๊ณ , ์ ํจ๊ธฐ๊ฐ์ 2020๋ 10์ 15์ผ์ด๋ค.
- ์ ํจ๋๋ฉ์ธ ๋ฐ ๊ฒฝ๋ก๋ ssafy.com Domain์ /user Path๊ฐ ๋๋ค.
Cookie์ ์ฃผ์ ๊ธฐ๋ฅ
session? : javax.servlet.http.HttpSession
- ๋ฐฉ๋ฌธ์๊ฐ ์น ์๋ฒ์ ์ ์ํด ์๋ ์ํ๋ฅผ ํ๋์ ๋จ์๋ก ๋ณด๊ณ ๊ทธ๊ฒ์ ์ธ์ ์ด๋ผ ํ๋ค.
- WAS์ memory์ Object์ ํํ๋ก ์ ์ฅ.
- memory๊ฐ ํ์ฉํ๋ ์ฉ๋๊น์ง ์ ํ ์์ด ์ ์ฅ ๊ฐ๋ฅ.
session์ ์ฌ์ฉ ์
- site๋ด์์ ํ๋ฉด์ ์ด๋ํด๋ ๋ก๊ทธ์ด(์ฌ์ฉ์ ์ ๋ณด)์ด ํ๋ฆฌ์ง ์๊ณ ์ ์ง
- ์ฅ๋ฐ๊ตฌ๋
session์ ๋์ ์์
- ํด๋ผ์ด์ธํธ๊ฐ ํ์ด์ง๋ฅผ ์์ฒญ.
- ์๋ฒ๋ ์ ๊ทผํ ํด๋ผ์ด์ธํธ์ Request-Header ํ๋์ธ Cookie๋ฅผ ํ์ธํ์ฌ, ํด๋ผ๋ฆฌ์ธํธ๊ฐ ํด๋น session-id๋ฅผ ๋ณด๋๋์ง ํ์ธ.
- session-id๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด, ์๋ฒ๋ session-id๋ฅผ ์์ฑํด ํด๋ผ์ด์ธํธ์๊ฒ ๋๋ ค์ค๋ค.
- ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋๋ ค์ค session-id๋ฅผ ์ฟ ํค๋ฅผ ์ฌ์ฉํด ์๋ฒ์ ์ ์ฅ. ์ฟ ํค ์ด๋ฆ : JSESSIONID
- ํด๋ผ์ด์ธํธ๋ ์ฌ ์ ์ ์, ์ด ์ฟ ํค(JSESSIONID)๋ฅผ ์ด์ฉํ์ฌ session-id ๊ฐ์ ์๋ฒ์ ์ ๋ฌ.
session์ ํน์ง.
- ์น ์๋ฒ์ ์น ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅ.
- ์น ์๋ฒ์ ์ ์ฅ๋๋ ์ฟ ํค(=์ธ์ ์ฟ ํค)
- ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ฑฐ๋, ์๋ฒ์์ ์ธ์ ์ ์ญ์ ํ์ ๋๋ง ์ญ์ ๊ฐ ๋๋ฏ๋ก, ์ฟ ํค๋ณด๋ค ๋น๊ต์ ๋ณด์์ด ์ข๋ค.
- ์ ์ฅ ๋ฐ์ดํฐ์ ์ ํ์ด ์๋ค.
- ๊ฐ ํด๋ผ์ด์ธํธ ๊ณ ์ Session ID๋ฅผ ๋ถ์ฌํ๋ค.
- Session ID๋ก ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ฐ ํด๋ผ์ด์ธํธ ์๊ตฌ์ ๋ง๋ ์๋น์ค ์ ๊ณต.
session์ ์ค์
- Browser๋น ํ๋์ JSESSIONID๋ฅผ ํ ๋น ๋ฐ์.
- ์์ด๋ ๋๋ ๋๋ค์๊ณผ ๊ฐ์ด ๋ก๊ทธ์ธ ํ์ ๊ฒฝ์ฐ ์์ฃผ ์ฌ์ฉ๋๋ ์ ๋ณด๋ฅผ session์ ์ ์ฅํ๋ฉด DB๋ฅผ ์ ๊ทผํ ํ์๊ฐ ์์ผ๋ฏ๋ก ํจ์จ์ ์ด๋ค.
HttpSession์ ์ฃผ์ ๊ธฐ๋ฅ