Programing_Java
[Listener, Filter] Spring์์ ํ์์ ์ผ๋ก ์์์ผ ํ ์๋ธ๋ฆฟ, ๋ฆฌ์ค๋, ํํฐ์ ์ญํ ๊ณผ ์ฐจ์ด์ ๋ณธ๋ฌธ
[Listener, Filter] Spring์์ ํ์์ ์ผ๋ก ์์์ผ ํ ์๋ธ๋ฆฟ, ๋ฆฌ์ค๋, ํํฐ์ ์ญํ ๊ณผ ์ฐจ์ด์
Joyfullyever 2025. 3. 19. 22:26โ ์น ์ ํ๋ฆฌ์ผ์ด์
: ๊ฐ๋ฐ๊ณผ์ ์์ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌ, Application์ ํ๋ฆ์ ์ ์ดํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉ
: Servlet, Listener, Filter๋ ์ค์ํ ์ญํ ์ ํจ
: ํนํ Spring๊ณผ ๊ฐ์ ํ๋ ์์ํฌ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ตฌ๋ค์ด ํ์ฌ๋์ด ์์ด, ์ฌ์ฉ์๊ฐ ๋ชจ๋ฅด๊ณ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ง์
1๏ธโฃ Servlet
: ์๋ฐ ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ HTTP ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ํด๋์ค
: ์๋ฒ์์ ์คํ
: ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ ์ ์ ํ ์๋ต์ ๋ง๋ค์ด ๋ณด๋ด๋ ์ญํ
โ๏ธ Spring Framework๋ Servlet์ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ์ ์ฒ๋ฆฌ
• Spring Boot → ๊ฐ๋ฐ์๊ฐ ์ง์ ์๋ธ๋ฆฟ์ ์์ฑํ์ง ์์๋ Spring์ด ๋ด์ฅ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์ค์ ํ๊ณ ๊ด๋ฆฌ
• ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ์๋ธ๋ฆฟ์ ์ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ๊ทธ ์กด์ฌ ์์ฒด๋ฅผ ๋ชจ๋ฅผ ์ ์์
• Spring ๋ด๋ถ์์ ์๋ธ๋ฆฟ์ ์ค์ํ ์ญํ ์ ํจ
2๏ธโฃ Listener
: Application, Session, Request์ ํน์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ , ๊ทธ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์๋์ผ๋ก ๋์ํ๋ ํด๋์ค
: Server Lifecycle์ ๋ง์ถฐ ์์ ์์ , ์ข ๋ฃ ์์ , ์์ฑ ๋ณ๊ฒฝ ๋ฑ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ฒ๋ฆฌ
โ๏ธ ์ญํ
• Application ์์/์ข ๋ฃ : ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์ ๋๋ ์ข ๋ฃ๋ ๋ ์ํํ ์์ ์ ์ ์
• Session ์์/์ข ๋ฃ : ์ฌ์ฉ์ ์ธ์ ์ด ์์ ๋๋ ์ข ๋ฃ๋ ๋ ํน์ ์์ ์ ์ํ
• Attribute ๋ณ๊ฒฝ ๊ฐ์ง : ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ ์ธ์ ์์ฑ์ด ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค ๋์ํ ์ ์๋๋ก ์ค์ ๊ฐ๋ฅ
โ๏ธ ํฌ๋กค๋ง๊ณผ ๋ฆฌ์ค๋
• ํฌ๋กค๋ง์ ์ต์ ํํ๋๋ฐ ๋ฆฌ์ค๋ ์ฌ์ฉ ๊ฐ๋ฅ
• ์ฅ๋ฐ๊ตฌ๋์ ๊ฐ์ ์ธ์ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๊ฐ ํ์์ ์ผ๋ก ์กด์ฌํ๋ค๊ณ ๊ฐ์ → ๋ฆฌ์ค๋์์ ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ธ์ ์ด ์์ฑ๋ ๋ ์๋์ผ๋ก ์ด๊ธฐํ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํฌ๋กค๋ง์ ์ต์ ํ
3๏ธโฃ Filter
: ์์ฒญ๊ณผ ์๋ต์ ๊ฐ๋ก์ฑ์ ์ฒ๋ฆฌํ๋ ํด๋์ค
: Servlet๊ณผ ์ ์ฌํ๊ฒ HTTP ์์ฒญ๊ณผ ์๋ต์ ๋ค๋ฃจ์ง๋ง, Servlet๋ณด๋ค ๋ฎ์ ๋ ๋ฒจ์์ ์๋
: ์ฌ๋ฌ Filter๋ฅผ ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์์ ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
โ๏ธ ์ญํ
• ์ธ์ฆ ๋ฐ ์ธ๊ฐ : ์์ฒญ์ด ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ์ธํ ํ, ์ธ์ฆ๋์ง ์์ผ๋ฉด ์ ๊ทผ์ ์ฐจ๋จํ๊ฑฐ๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์ ํ๋ ๋ฑ์ ์์ ์ํ
• ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ : ์์ฒญ์ด๋ ์๋ต์ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ฒ๋ฆฌ
• ๋ก๊น /๋ชจ๋ํฐ๋ง : ์์ฒญ์ ๋ํ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๊ฑฐ๋, ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ ์ํ
โ๏ธ ์ธ์ฆ๊ณผ ํํฐ
• ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ ๋ฐ ์ธ๊ฐ๋ ๋งค์ฐ ์ค์ํ ๋ถ๋ถ
• ์ํ๊ถ๊ณผ ๊ฐ์ ๋ณด์์ด ์ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์์ฒญ์ ๊ฐ๋ก์ฑ์, ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ฌ๋ถ, ๊ถํ ๋ณด์ ์ฌ๋ถ ๋ฑ์ ํ์ธ
• ์ธ์ฝ๋ฉ ๋ฐ ๋์ฝ๋ฉ ์์ ๋ ํํฐ์์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
→ ์์ฒญ์ ๋ฌธ์ ์ธ์ฝ๋ฉ์ UTF-8๋ก ์ค์ , ์๋ต์ ์ธ์ฝ๋ฉ์ ๋ค์ ์ฒ๋ฆฌํ๋ ๋ฑ์ ์์
4๏ธโฃ Filter & Servlet
• ํํฐ๋ ์๋ธ๋ฆฟ์ฒ๋ผ ๋งคํ์ ์ค์ ํ์ฌ ์์ฒญ์ ๋ฐ๋ผ ํน์ ํํฐ๊ฐ ๋์ํ๋๋ก ํจ
→ ํน์ URL ํจํด์ ๋ํด ์ธ์ฆ ํํฐ๋ฅผ ์ ์ฉ ๋๋ ๋ก๊น ํํฐ ์ค์ ๊ฐ๋ฅ