ES6學習(const命令)
阿新 • • 發佈:2020-12-12
技術標籤: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>