Java攔截器


  攔截器,主要用於攔截前端請求,常用於登錄檢查。

  下面是演示使用攔截器攔截未登錄的用戶訪問需要登錄的模塊情景,使用配置方式實現和注解方式實現代碼:

配置方式:

1、web.xml中配置監聽器,對於所有的/admin開頭的請求,都走com.blog.interceptor.LoginInterceptor這個攔截器。

<mvc:interceptors>
    <!-- 登錄檢查攔截器 -->
    <mvc:interceptor>
        <mvc:mapping path="/admin/**" />
        <bean class="com.blog.interceptor.LoginInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

  

2、再看com.blog.interceptor.LoginInterceptor的實現代碼:

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        SysUser currentUser = SessionHelper.getCurrentUser(arg0);
        if (currentUser == null) {
            // 攔截,重定向到登陸頁面
            // 需要加上當前請求路徑
            arg1.sendRedirect(arg0.getContextPath() + "/Login/loginpage.do");

            return false;
        }

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        // TODO Auto-generated method stub

    }

}

對於客戶端的每次登錄,都先記錄登錄用戶的用戶名信息,對於每次請求,獲取session中的用戶信息,如果用戶信息為空,則認為該用戶未登錄,則跳轉到登錄頁面。

 

注解方式:

攔截類是一樣的,只需要增加配置類。

//頁面配置類,不再使用xml配置需要攔截打請求
@Configuration
public class WebMvcConfg extends WebMvcConfigurationSupport {

    @Autowired
    private LoginInterceptor loginInterceptor;// 需要使用的攔截器,對於所有admin開頭的請求都需要進行登錄攔截

    // 攔截器鏈
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // addPathPatterns 用於添加攔截規則
        // excludePathPatterns 用於排除攔截
        registry.addInterceptor(loginInterceptor).addPathPatterns("/admin/**")
                .excludePathPatterns("/admin/**/exportUser","/admin/**/exportAllUser");
    }

    // 處理靜態資源
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    }

}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM