關於HandlerInterceptorAdapter和WebMvcConfigurerAdapter過時

菜鳥線上程式設計發表於2020-12-21

HandlerInterceptorAdapter

繼承HandlerInterceptorAdapter該類配置介面卡從而實現攔截,可該類已經過時了(HandlerInterceptorAdapter )。
這時我們需要來實現一個介面,來達到繼承HandlerInterceptorAdapter類相同的效果,實現HandlerInterceptor介面。

public class loginInterceptor implements HandlerInterceptor {
    @Override
    //preHandle:在方法呼叫前使用
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) throws Exception {
        //判斷使用者是否登入,未登入重定向到登入頁面
        if (request.getSession().getAttribute("user") == null){
            response.sendRedirect("/admin");
            return false;
        }
        return true;
    }
}

WebMvcConfigurerAdapter

當上面的介面卡配置好,我們就需要載入介面卡來實現攔截。但是通過繼承WebMvcConfigurerAdapter類來進行配置已經過時了。(WebMvcConfigurerAdapter

當然同樣也可以通過實現一個介面來進行配置,實現WebMvcConfigurer介面。

@Configuration
public class myConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //載入登入介面卡
        registry.addInterceptor(new loginInterceptor())
                .addPathPatterns("/admin/**")
                .excludePathPatterns("/admin")
                .excludePathPatterns("/admin/login");
    }
}

希望上面內容能夠幫助到你們!

相關文章