๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring

์Šคํ”„๋ง์˜ ์„ธ์…˜๊ณผ ์ฟ ํ‚ค

HTTP ํ”„๋กœํ† ์ฝœ์˜ Connectionless Protocol

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•˜๋Š” ์›น์„œ๋น„์Šค์˜ HTTP ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” Connectionless Protocol ์ด๋ผ๋Š” ๊ทœ์น™์ด ์žˆ๋‹ค.

ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ์‘๋‹ตํ•œ ํ›„ ๋ฐ”๋กœ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๋Š” ๊ฒƒ์ด Connectionless Protocol ์ธ๋ฐ, ์‹ค์ œ ์š”์ฒญ์ด ๋ช‡ ์ฒœ, ๋ช‡ ๋งŒ๊ฐœ๋˜๋Š” ์›น ์„œ๋น„์Šค์—์„œ๋Š” ์š”์ฒญ์„ ๊ทธ๋•Œ๊ทธ๋•Œ ํ•ด์ œํ•˜์ง€ ์•Š๊ณ  ์œ ์ง€ํ•˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์„ธ์…˜๊ณผ ์ฟ ํ‚ค

Connectionless Protocol๋กœ ์ธํ•ด ์„œ๋ฒ„์˜ ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ง‰์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๋กœ๊ทธ์ธ, ์ƒํ’ˆ์˜ ์ฃผ๋ฌธ ์š”์ฒญ ๋“ฑ ์ •๋ณด๊ฐ€ ์œ ์ง€๋˜์–ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์ด ์–ด๋ ค์›Œ์ง„๋‹ค.

๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, Connectionless Protocol์„ ์ง€ํ‚ค๊ณ  ์ž์›์˜ ํšจ์œจ์  ๊ด€๋ฆฌ์™€ ์ •๋ณด ์œ ์ง€๋ฅผ ์œ„ํ•ด ์„ธ์…˜๊ณผ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์„ธ์…˜ : ์„œ๋ฒ„์—์„œ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌ (๋ณด์•ˆ์— ๋” ๊ฐ•ํ•˜๊ณ  ๋งŽ์ด ์“ฐ์ž„)

์ฟ ํ‚ค : ํด๋ผ์ด์–ธํŠธ์—์„œ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌ (์„ธ์…˜๋ณด๋‹ค ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ณ , ์„œ๋ฒ„์˜ ๋ถ€ํ™”๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)

 

์Šคํ”„๋ง์—์„œ์˜ ์„ธ์…˜ ์‚ฌ์šฉ

1. HttpServletRequest๋ฅผ ์ด์šฉํ•ด์„œ ์„ธ์…˜์„ ๋ฐ›์Œ

์ปจํŠธ๋กค๋Ÿฌ์—์„œ HttpServletRequest request๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ ๋’ค,

HttpServletRequest session = request.getSession();
// ์„ธ์…˜์— ์†์„ฑ์„ ์ถ”๊ฐ€
session.setAttribute("SessionName", SessionValue); // ์†์„ฑ ์ด๋ฆ„, ์†์„ฑ ๊ฐ’
// ์„ธ์…˜์— ์†์„ฑ ์ด๋ฆ„๊ณผ ์†์„ฑ ๊ฐ’์„ ๋„ฃ์Œ

2. HttpSession -> ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ HttpSession์„ ๋ฐ”๋กœ ๋ฐ›์•„์„œ ์„ธ์…˜์„ ์‚ฌ์šฉํ•จ

์ปจํŠธ๋กค๋Ÿฌ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— HttpSession๋กœ ๋ฐ”๋กœ ์„ธ์…˜์„ ๋ฐ›์•„์˜ค๋ฉด, request.getSession() ์—†์ด
๋ฐ”๋กœ session.setAttribute("SessionValueName", SessionValue); ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์„ธ์…˜ ์‚ญ์ œ(๋กœ๊ทธ์•„์›ƒ, ํšŒ์› ํƒˆํ‡ด ๋“ฑ...)

session.invalidate(); // ์„ธ์…˜์˜ ์†์„ฑ์„ ์‚ญ์ œํ•œ๋‹ค.

๋ฐ˜๋ณต

์„œ๋ฒ„๋กœ request -> setAttribute -> ์„ธ์…˜ ์†์„ฑ ์ €์žฅ -> response -> ๋‹ค์‹œ request(์žฌ์š”์ฒญ) -> getAttribute -> ์„ธ์…˜ ์†์„ฑ ๋ฐ˜ํ™˜ -> response

๋ฐ˜๋ณต

์Šคํ”„๋ง์—์„œ์˜ Cookie ์‚ฌ์šฉ

httpServletResponse์— ์ฟ ํ‚ค๋ฅผ ๋‹ด๋Š”๋‹ค.

Cookie ExampleCookie = new Cookie("CookieName",CookieValue); // ์ฟ ํ‚ค ์ด๋ฆ„, ์ฟ ํ‚ค ๊ฐ’
ExampleCookie.setMaxAge(60*60*24*30);
// ์ฟ ํ‚ค์˜ ์œ ํšจ ์‹œ๊ฐ„ ์„ค์ • -> ์—ฌ๊ธฐ์„  60*60*24*30์ดˆ ์ž„์œผ๋กœ ํ•œ ๋‹ฌ์ด๋‹ค.
response.addCookie(ExampleCookie);
// response์— ์ฟ ํ‚ค๋ฅผ ๋‹ด๋Š”๋‹ค.

@CookieValue ์–ด๋…ธํ…Œ์ด์…˜

์Šคํ”„๋ง์—์„œ๋Š” @CookieValue์ด๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

@CookieValue(value="์ฐพ๋Š” ์ฟ ํ‚ค ์ด๋ฆ„", require=false) Cookie cookieName;
// require -> true์ผ ์‹œ, value์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด ์ต์…‰์…˜ ๋ฐœ์ƒ