1. 程式人生 > 其它 >python影象分類出現錯誤PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x000001

python影象分類出現錯誤PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x000001

技術標籤:SpringMVC

攔截器

定義:類似於過濾器(處於客戶端與伺服器資原始檔之間的一道過濾網,在訪問資原始檔之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應,常用於登入許可權驗證、資源訪問許可權控制、敏感詞彙過濾、字元編碼轉換等等操作)。
不同的是
過濾器(Filter)是Servlet規範的一部分,任何java web工程都可以使用,攔截物件可以是所有資源進行攔截,實際上是請求在客戶端與Servlet之間進行操作
攔截器(Interceptor)是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用,實際上是在DispatcherServlet和具體的處理器(使用@RequestMapping註解的方法)之間進行攔截並操作,無法對DispatcherServlet不攔截的請求進行攔截(.jsp等等)
攔截器也是AOP思想的具體應用

編寫攔截器

//登入攔截,未登入無法進行訪問其他頁面
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        String url=request.getRequestURI();
        //不攔截的網頁
        if(url.contains("/login")){
            return true;
        }
        HttpSession session=request.getSession();
        //USER_SESSION這個名字與Controller中設計的名字相同
        User user=(User)session.getAttribute("USER_SESSION");
        if(user!=null)
            return true;
        System.out.println("進行攔截");
        request.setAttribute("loginMsg", "您還沒有登入,請先登入!");
        request.getRequestDispatcher("/user/login").forward(request,response);
        return false;
    }
}

配置攔截器

<mvc:interceptors>
    <!--先後順序按照配置順序的進行攔截-->
    <mvc:interceptor>
        <!--使用LoginInterator攔截器攔截/car/**下的contrlooer方法-->
        <!--需要進行攔截的方法-->
        <mvc:mapping path="/car/**"/>
        <!--不需要進行攔截的方法-->
        <!--<mvc:exclude-mapping path="/user/login"/>-->
        <!--配置攔截器-->
        <bean class="com.whether.interceptor.LoginInterator" />
    </mvc:interceptor>
    
    <mvc:interceptor>
        <mvc:mapping path=""/>
        <bean class="" />
    </mvc:interceptor>
</mvc:interceptors>