โ˜€๏ธ[Spring MVC] HandlerInterceptor ๐ŸŒˆ

SoonMinยท2021๋…„ 4์›” 11์ผ
0

๐Ÿš€ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ ์˜ˆ์‹œ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ URL์š”์ฒญ์„ ๋ณด๋‚ผ ๊ฒฝ์šฐ ํ•ด๋‹น URL ๋งคํ•‘์„ ๊ฐ€์ง€๋Š” Controller์—์„œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ ์‹œํ‚ฌ ๊ฒƒ์ด๋‹ค.

( ๐Ÿคฆ๐Ÿปโ€โ™€๏ธ ์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์€ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ DispatcherServlet์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ณผ์ •๋“ค์ด ์ผ์–ด๋‚œ๋‹ค.)

์ด๋•Œ, ์š”์ฒญ ํ๋ฆ„๋“ค ์‚ฌ์ด์— ๋กœ์ง์„ ๋ผ์›Œ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

์ œ์ผ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋กœ ๋กœ๊ทธ์ธ์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๊ธ€์“ฐ๊ธฐ ํผ์ด๋‚˜ ํšŒ์›์ •๋ณด ์ˆ˜์ • ํผ์„ URL์— ์ž…๋ ฅํ•ด์„œ ๋“ค์–ด๊ฐ€์ง€๋Š”๊ฑด ๋งค์šฐ ์ด์ƒํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ์žˆ์„๋•Œ ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•œ ์ปจํŠธ๋กค๋Ÿฌ ์ฝ”๋“œ๋งˆ๋‹ค ๋กœ๊ทธ์ธ ํ™•์ธ ์—ฌ๋ถ€ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š”๊ฒƒ์€ ๋งŽ์€ ์ค‘๋ณต์„ ์ผ์œผํ‚จ๋‹ค.

์ด๋•Œ ๋‹ค์ˆ˜์˜ ์ปจํŠธ๋กค๋Ÿฌ์— ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ด HandlerInterceptor์ด๋‹ค.

๐Ÿš€ HandlerInterceptor ๊ตฌํ˜„๋ฐ ํ๋ฆ„

HandlerInterceptor ์ธํ„ฐํŽ˜์ด์Šค์—” ์ž์ฃผ ์“ฐ์ด๋Š” 3๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.

HandlerInterceptor ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋“ค์€ ์ „๋ถ€ default(JAVA8 ์ดํ›„)๋กœ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

  • preHandle() : ์ปจํŠธ๋กค๋Ÿฌ(ํ•ธ๋“ค๋Ÿฌ) ์‹คํ–‰ ์ „
  • postHandle() : ์ปจํŠธ๋กค๋Ÿฌ์˜ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ ํ›„์— ์‹คํ–‰.(๋ทฐ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „)
  • afterCompletion() : ๋ทฐ๋ฅผ ์‹คํ–‰ํ•œ ์ดํ›„

๐Ÿš€ Filter & Interceptor

Interceptor๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ spring์—†์ด servlet/jsp๋กœ ์›น์„ ๊ตฌํ˜„ํ• ๋•Œ filter๋ผ๋Š”๊ฒƒ์„ ์‚ฌ์šฉํ•œ๊ฒƒ์ด ๋– ์˜ฌ๋ž๋‹ค.

๊ธฐ๋Šฅ๋“ค์ด ๋น„์Šทํ•ด ๋ณด์˜€์ง€๋งŒ ๋‹ค๋ฅธ์ ๋“ค์ด ๋ถ„๋ช… ์žˆ์—ˆ๋‹ค.

  1. Filter์™€ Interceptor๋Š” ์‹คํ–‰๋˜๋Š” ์‹œ์ ์ด ๋‹ค๋ฅด๋‹ค.

Filter : Web Application์— ๋“ฑ๋ก

Interceptor : Spring Context์— ๋“ฑ๋ก

  1. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค.

Filter ์˜ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Web Applications์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. was๋ฅผ ํ†ฐ์บฃ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Filter ๋‚ด์—์„œ ์˜ˆ์™ธ๋ฅผ ์žก์•„์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๋ฏธ๋ค„์•ผ ํ•œ๋‹ค.

Interceptor ์˜ ๊ฒฝ์šฐ DispatcherServlet๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ๋‚ด์— ์žˆ์œผ๋ฏ€๋กœ ControllerAdvice์—์„œ ExceptionHandler๋ฅผ ์‚ฌ์šฉํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ฒ˜๋Ÿผ Interceptor์˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋Š” Filter์— ๋น„ํ•ด ๊ฒฌ๊ณ ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿš€ ๋งˆ์ง€๋ง‰์œผ๋กœ..

JSP/Servlet์„ ํ•  ๋‹น์‹œ์—” ์ˆ˜๋งŽ์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ ๊ธฐ๋Šฅ๋งˆ๋‹ค ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์— ์•”์šธํ–ˆ์—ˆ์ง€๋งŒ Interceptor ๋ฅผ ์•Œ๊ฒŒ ๋œ ํ›„์— ๋„ˆ๋ฌด ๊ธฐ๋ปค๋‹ค... (๊ทธ๋• Filter๋กœ ์ฒ˜๋ฆฌํ•ด ์ค„ ์ƒ๊ฐ๋„ ๋ชป ํ–ˆ์—ˆ๋‹ค ใ… ใ… )

0๊ฐœ์˜ ๋Œ“๊ธ€