๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก/๐Ÿƒ Spring

Spring | Interceptor(์ธํ„ฐ์…‰ํ„ฐ) / ๋กœ๊ทธ์ธ · ์•„์›ƒ ์ฒ˜๋ฆฌ

  • -

Interceptor(์ธํ„ฐ์…‰ํ„ฐ)

ํŠน์ • URI ๋กœ ์š”์ฒญ์‹œ Controller ๋กœ ๊ฐ€๋Š” ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๋Š” ์—ญํ• .

์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ง€์›ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒ ํด๋ž˜์Šค

- HandlerInterceptor

- HandlerInterceptorAdapter

 

HandlerInterceptorAdapter ์˜ 3๊ฐ€์ง€ ๋ฉ”์„œ๋“œ

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
: Controller ๋กœ ์š”์ฒญ์ด ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ˆ˜ํ–‰
postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
: ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ฉ”์„œ๋“œ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๊ณ  return ํ›„ ํ™”๋ฉด์„ ๋„์›Œ์ฃผ๋Š” ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๊ธฐ ์ง์ „์— ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋จ.
 afterCompletion()
: ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๊ณ  ํ™”๋ฉด ์ฒ˜๋ฆฌ๊นŒ์ง€ ๋๋‚œ ๋’ค ํ˜ธ์ถœ.

 

์‚ฌ์šฉ๋ฐฉ๋ฒ• | Interceptor(์ธํ„ฐ์…‰ํ„ฐ) ๊ตฌ์„ฑ

๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ์ธํ„ฐ์…‰ํ„ฐ ํด๋ž˜์Šค ๊ตฌ์„ฑ.

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ค‘ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•˜๊ธฐ ์ „ ์„ธ์…˜ ๊ฒ€์ฆ์„ ์œ„ํ•ด ์„ธ์…˜ ์œ ๋ฌด์˜ ์กฐ๊ฑด์„ ์„ค์ •ํ–ˆ๋‹ค.

public class AuthLoginInterceptor extends HandlerInterceptorAdapter {
    private static final Logger LOGGER = LoggerFactory.getLogger(AuthLoginInterceptor.class);
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
        response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
        response.setHeader("Expires", "0"); // Proxies.
        
        HttpSession session = request.getSession();
        if (session.getAttribute("id") != null) {
            
            LOGGER.info("session true");
            return true;
        } else {
            
            LOGGER.info("session false");
            return false;
        }
    }
}

 

์‚ฌ์šฉ๋ฐฉ๋ฒ• | Spring ์„ค์ • ๋“ฑ๋ก

dispatcher-servlet.xml ์ด๋‚˜ servlet-context.xml ์—์„œ ์ธํ„ฐ์…‰ํ„ฐ ๋นˆ(bean) ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ธํ„ฐ์…‰ํ„ฐ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

ํ•ด๋‹น ๊ฐ์ฒด์™€ ์–ด๋–ค url์ด ์š”์ฒญ์‹œ์— ์ธํ„ฐ์…‰ํ„ฐ๊ฐ€ ์ž‘๋™ํ• ์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค.

// servlet-context.xml
<!-- Interceptor ๊ฐ์ฒด ์ƒ์„ฑ -->
<beans:bean
    id="authenticationInterceptor"
    class="com.fireagency.volunteer.module.common.interceptor.AuthLoginInterceptor" >    
</beans:bean>

<!-- Interceptor ์„ค์ • -->
<mvc:interceptors>
    <mvc:interceptor>
    	<!-- ์ „์ฒด ๋ฒ”์œ„ -->
        <mvc:mapping path="/**"/>
        <!-- ์˜ˆ์™ธ ๋ฒ”์œ„ -->
        <mvc:exclude-mapping path="/error/*.do"/>
        <mvc:exclude-mapping path="/login.do"/>
        <mvc:exclude-mapping path="/logout.do"/>
        <mvc:exclude-mapping path="/join.do"/>
        <mvc:exclude-mapping path="/resources/**"/>
        <beans:ref bean="authenticationInterceptor"/>
    </mvc:interceptor>  
</mvc:interceptors>

 

๋กœ๊ทธ์ธ · ์•„์›ƒ ์ฒ˜๋ฆฌ

๋กœ๊ทธ์•„์›ƒ์„ ํ–ˆ์Œ์—๋„ ๋’ค๋กœ๊ฐ€๊ธฐ ์‹œ ๋กœ๊ทธ์ธ ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ๋Š” ๊ฒƒ์ด ๋ฌธ์ œ.

์ด๋Ÿฐ ํ˜„์ƒ์˜ ์›์ธ์€ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์žˆ๋Š” ๊ฐ’์„ ๋‹ค์‹œ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ.

์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋’ค๋กœ๊ฐ€๊ธฐ ์‹œ ์บ์‹œ๊ฐ€ ๋‚จ์•„์žˆ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

 

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ dispatcher-servlet.xml ์ด๋‚˜ servlet-context.xml ํŒŒ์ผ์—์„œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

<mvc:interceptors>
    <mvc:interceptor>
        <!-- ๋ฒ”์œ„ ์„ค์ • ๋ฐ ์˜ˆ์™ธ ๋ฒ”์œ„ ์„ค์ • -->
    </mvc:interceptor>
    
    <!-- ์•„๋ž˜ ๋‚ด์šฉ์€ ๋กœ๊ทธ์•„์›ƒํ›„ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฒ„ํŠผ๋ˆŒ๋ €์„๋•Œ ๋‹ค์‹œ ๋กœ๊ทธ์ธ ๋˜๋Š”๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ. -->
    <beans:bean
    	id="webContentInterceptor"
        class="org.springframework.web.servlet.mvc.WebContentInterceptor" >
        <beans:property name="cacheSeconds" value="0" />
        <beans:property name="useExpiresHeader" value="true" />
        <beans:property name="useCacheControlHeader" value="true" />
        <beans:property name="useCacheControlNoStore" value="true" />
        <beans:property name="cacheMappings">
            <beans:props> <!-- ์•„๋ž˜ ๊ฒฝ๋กœ์—๋งŒ ๋’ค๋กœ๊ฐ€๊ธฐ ์ œํ•œ์‹œํ‚ด. -->
                <beans:prop key="/login.do">86400</beans:prop>
            </beans:props>
        </beans:property>
    </beans:bean>  
</mvc:interceptors>

 

 

 

์ถœ์ฒ˜ | ์•…๋•๊ณ ์šฉ์ฃผ์˜ ๊ฐœ๋ฐœ ์ผ๊ธฐ

'๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก > ๐Ÿƒ Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Spring | STOMP  (1) 2023.04.17
Spring | Model๊ณผ ModelAndView  (0) 2023.04.07
Spring | File Upload  (0) 2023.02.06
Spring | Exception  (0) 2023.01.19
Spring | RedirectAttributes  (0) 2023.01.17
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.